is_preview ) { return $this; } $this->is_preview = $is_preview; $this->on_preview_change(); return $this; } protected function is_preview(): bool { return $this->is_preview; } protected function get_context_key( string $key ): string { $map = $this->get_context_keys()[ $key ] ?? null; if ( null === $map ) { throw new \InvalidArgumentException( sprintf( 'Unknown context key: %s', esc_html( $key ) ) ); } return $this->is_preview ? $map['preview'] : $map['frontend']; } protected function get_context_keys(): array { if ( empty( $this->context_keys ) ) { return []; } return $this->context_keys; } protected function on_preview_change(): void { } }