var/www/html/wiensworld.de/wp-includes | uid:33
class-wp-connector-registry.php [X]
<?php
/**
 * Connectors API: WP_Connector_Registry class.
 *
 * @package WordPress
 * @subpackage Connectors
 * @since 7.0.0
 */

/**
 * Manages the registration and lookup of connectors.
 *
 * This is an internal class. Use the public API functions to interact with connectors:
 *
 *  - `wp_is_connector_registered()` — check if a connector exists.
 *  - `wp_get_connector()`           — retrieve a single connector's data.
 *  - `wp_get_connectors()`          — retrieve all registered connectors.
 *
 * Plugins receive the registry instance via the `wp_connectors_init` action
 * to register or override connectors directly.
 *
 * @since 7.0.0
 * @access private
 *
 * @see wp_is_connector_registered()
 * @see wp_get_connector()
 * @see wp_get_connectors()
 * @see _wp_connectors_init()
 *
 * @phpstan-type Connector array{
 *     name: non-empty-string,
 *     description: string,
 *     logo_url?: non-empty-string,
 *     type: non-empty-string,
 *     authentication: array{
 *         method: 'api_key'|'none',
 *         credentials_url?: non-empty-string,
 *         setting_name?: non-empty-string,
 *         constant_name?: non-empty-string,
 *         env_var_name?: non-empty-string
 *     },
 *     plugin: array{
 *         file?: non-empty-string,
 *         is_active: callable(): bool
 *     }
 * }
 */
final class WP_Connector_Registry {
	/**
	 * The singleton instance of the registry.
	 *
	 * @since 7.0.0
	 */
	private static ?WP_Connector_Registry $instance = null;

	/**
	 * Holds the registered connectors.
	 *
	 * Each connector is stored as an associative array with keys:
	 * name, description, type, authentication, and optionally plugin.
	 *
	 * @since 7.0.0
	 * @var array<string, array>
	 * @phpstan-var array<string, Connector>
	 */
	private array $registered_connectors = array();

	/**
	 * Registers a new connector.
	 *
	 * Validates the provided arguments and stores the connector in the registry.
	 * For connectors with `api_key` authentication, a `setting_name` can be provided
	 * explicitly. If omitted, one is automatically generated using the pattern
	 * `connectors_{$type}_{$id}_api_key`, with hyphens in the type and ID normalized
	 * to underscores (e.g., connector type `spam_filtering` with ID `my_plugin` produces
	 * `connectors_spam_filtering_my_plugin_api_key`). This setting name is used for the
	 * Settings API registration and REST API exposure.
	 *
	 * Registering a connector with an ID that is already registered will trigger a
	 * `_doing_it_wrong()` notice and return `null`. To override an existing connector,
	 * call `unregister()` first.
	 *
	 * @since 7.0.0
	 *
	 * @see WP_Connector_Registry::unregister()
	 *
	 * @param string $id   The unique connector identifier. Must match the pattern
	 *                     `/^[a-z0-9_-]+$/` (lowercase alphanumeric, hyphens, and underscores only).
	 * @param array  $args {
	 *     An associative array of arguments for the connector.
	 *
	 *     @type string $name           Required. The connector's display name.
	 *     @type string $description    Optional. The connector's description. Default empty string.
	 *     @type string $logo_url       Optional. URL to the connector's logo image.
	 *     @type string $type           Required. The connector type, e.g. 'ai_provider'.
	 *     @type array  $authentication {
	 *         Required. Authentication configuration.
	 *
	 *         @type string $method          Required. The authentication method: 'api_key' or 'none'.
	 *         @type string $credentials_url Optional. URL where users can obtain API credentials.
	 *         @type string $setting_name    Optional. The setting name for the API key.
	 *                                       When omitted, auto-generated as
	 *                                       `connectors_{$type}_{$id}_api_key`.
	 *                                       Must be a non-empty string when provided.
	 *         @type string $constant_name   Optional. PHP constant name for the API key
	 *                                       (e.g. 'ANTHROPIC_API_KEY'). Only checked when provided.
	 *         @type string $env_var_name    Optional. Environment variable name for the API key
	 *                                       (e.g. 'ANTHROPIC_API_KEY'). Only checked when provided.
	 *     }
	 *     @type array  $plugin         {
	 *         Optional. Plugin data for install/activate UI.
	 *
	 *         @type string   $file      Optional. The plugin's main file path relative to the
	 *                                   plugins directory (e.g. 'my-plugin/my-plugin.php' or
	 *                                   'hello.php').
	 *         @type callable $is_active Optional callback to determine whether the plugin
	 *                                   is active. Receives no arguments and must return bool.
	 *                                   Defaults to `__return_true`.
	 *     }
	 * }
	 * @return array|null The registered connector data on success, null on failure.
	 *
	 * @phpstan-param array{
	 *     name: non-empty-string,
	 *     description?: string,
	 *     logo_url?: non-empty-string,
	 *     type: non-empty-string,
	 *     authentication: array{
	 *         method: 'api_key'|'none',
	 *         credentials_url?: non-empty-string,
	 *         setting_name?: non-empty-string,
	 *         constant_name?: non-empty-string,
	 *         env_var_name?: non-empty-string
	 *     },
	 *     plugin?: array{
	 *         file?: non-empty-string,
	 *         is_active?: callable(): bool
	 *     }
	 * } $args
	 * @phpstan-return Connector|null
	 */
	public function register( string $id, array $args ): ?array {
		if ( ! preg_match( '/^[a-z0-9_-]+$/', $id ) ) {
			_doing_it_wrong(
				__METHOD__,
				__(
					'Connector ID must contain only lowercase alphanumeric characters, hyphens, and underscores.'
				),
				'7.0.0'
			);
			return null;
		}

		if ( $this->is_registered( $id ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" is already registered.' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}

		// Validate required fields.
		if ( empty( $args['name'] ) || ! is_string( $args['name'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" requires a non-empty "name" string.' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}

		if ( empty( $args['type'] ) || ! is_string( $args['type'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" requires a non-empty "type" string.' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}

		if ( ! isset( $args['authentication'] ) || ! is_array( $args['authentication'] ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" requires an "authentication" array.' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}

		if ( empty( $args['authentication']['method'] ) || ! in_array( $args['authentication']['method'], array( 'api_key', 'none' ), true ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" authentication method must be "api_key" or "none".' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}

		if ( 'ai_provider' === $args['type'] && ! wp_supports_ai() ) {
			// No need for a `doing_it_wrong` as AI support is disabled intentionally.
			return null;
		}

		$connector = array(
			'name'           => $args['name'],
			'description'    => isset( $args['description'] ) && is_string( $args['description'] ) ? $args['description'] : '',
			'type'           => $args['type'],
			'authentication' => array(
				'method' => $args['authentication']['method'],
			),
		);

		if ( ! empty( $args['logo_url'] ) && is_string( $args['logo_url'] ) ) {
			$connector['logo_url'] = $args['logo_url'];
		}

		if ( 'api_key' === $args['authentication']['method'] ) {
			if ( ! empty( $args['authentication']['credentials_url'] ) && is_string( $args['authentication']['credentials_url'] ) ) {
				$connector['authentication']['credentials_url'] = $args['authentication']['credentials_url'];
			}
			if ( isset( $args['authentication']['setting_name'] ) ) {
				if ( ! is_string( $args['authentication']['setting_name'] ) || '' === $args['authentication']['setting_name'] ) {
					_doing_it_wrong(
						__METHOD__,
						/* translators: %s: Connector ID. */
						sprintf( __( 'Connector "%s" authentication setting_name must be a non-empty string.' ), esc_html( $id ) ),
						'7.0.0'
					);
					return null;
				}
				$connector['authentication']['setting_name'] = $args['authentication']['setting_name'];
			} else {
				$connector['authentication']['setting_name'] = str_replace( '-', '_', "connectors_{$connector['type']}_{$id}_api_key" );
			}
			if ( isset( $args['authentication']['constant_name'] ) ) {
				if ( ! is_string( $args['authentication']['constant_name'] ) || '' === $args['authentication']['constant_name'] ) {
					_doing_it_wrong(
						__METHOD__,
						/* translators: %s: Connector ID. */
						sprintf( __( 'Connector "%s" authentication constant_name must be a non-empty string.' ), esc_html( $id ) ),
						'7.0.0'
					);
					return null;
				}
				$connector['authentication']['constant_name'] = $args['authentication']['constant_name'];
			}
			if ( isset( $args['authentication']['env_var_name'] ) ) {
				if ( ! is_string( $args['authentication']['env_var_name'] ) || '' === $args['authentication']['env_var_name'] ) {
					_doing_it_wrong(
						__METHOD__,
						/* translators: %s: Connector ID. */
						sprintf( __( 'Connector "%s" authentication env_var_name must be a non-empty string.' ), esc_html( $id ) ),
						'7.0.0'
					);
					return null;
				}
				$connector['authentication']['env_var_name'] = $args['authentication']['env_var_name'];
			}
		}

		$connector['plugin'] = array();

		if ( ! empty( $args['plugin'] ) && is_array( $args['plugin'] ) ) {
			if ( ! empty( $args['plugin']['file'] ) ) {
				$connector['plugin']['file'] = $args['plugin']['file'];
			}

			if ( isset( $args['plugin']['is_active'] ) ) {
				if ( ! is_callable( $args['plugin']['is_active'] ) ) {
					_doing_it_wrong(
						__METHOD__,
						/* translators: %s: Connector ID. */
						sprintf( __( 'Connector "%s" plugin is_active must be callable.' ), esc_html( $id ) ),
						'7.0.0'
					);
					return null;
				}

				$connector['plugin']['is_active'] = $args['plugin']['is_active'];
			}
		}

		if ( ! isset( $connector['plugin']['is_active'] ) ) {
			$connector['plugin']['is_active'] = '__return_true';
		}

		$this->registered_connectors[ $id ] = $connector;
		return $connector;
	}

	/**
	 * Unregisters a connector.
	 *
	 * Returns the connector data on success, which can be modified and passed
	 * back to `register()` to override a connector's metadata.
	 *
	 * Triggers a `_doing_it_wrong()` notice if the connector is not registered.
	 * Use `is_registered()` to check first when the connector may not exist.
	 *
	 * @since 7.0.0
	 *
	 * @see WP_Connector_Registry::register()
	 * @see WP_Connector_Registry::is_registered()
	 *
	 * @param string $id The connector identifier.
	 * @return array|null The unregistered connector data on success, null on failure.
	 *
	 * @phpstan-return Connector|null
	 */
	public function unregister( string $id ): ?array {
		if ( ! $this->is_registered( $id ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" not found.' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}

		$unregistered = $this->registered_connectors[ $id ];
		unset( $this->registered_connectors[ $id ] );

		return $unregistered;
	}

	/**
	 * Retrieves the list of all registered connectors.
	 *
	 * Do not use this method directly. Instead, use the `wp_get_connectors()` function.
	 *
	 * @since 7.0.0
	 *
	 * @see wp_get_connectors()
	 *
	 * @return array Connector settings keyed by connector ID.
	 *
	 * @phpstan-return array<string, Connector>
	 */
	public function get_all_registered(): array {
		return $this->registered_connectors;
	}

	/**
	 * Checks if a connector is registered.
	 *
	 * Do not use this method directly. Instead, use the `wp_is_connector_registered()` function.
	 *
	 * @since 7.0.0
	 *
	 * @see wp_is_connector_registered()
	 *
	 * @param string $id The connector identifier.
	 * @return bool True if the connector is registered, false otherwise.
	 */
	public function is_registered( string $id ): bool {
		return isset( $this->registered_connectors[ $id ] );
	}

	/**
	 * Retrieves a registered connector.
	 *
	 * Do not use this method directly. Instead, use the `wp_get_connector()` function.
	 *
	 * Triggers a `_doing_it_wrong()` notice if the connector is not registered.
	 * Use `is_registered()` to check first when the connector may not exist.
	 *
	 * @since 7.0.0
	 *
	 * @see wp_get_connector()
	 *
	 * @param string $id The connector identifier.
	 * @return array|null The registered connector data, or null if it is not registered.
	 * @phpstan-return Connector|null
	 */
	public function get_registered( string $id ): ?array {
		if ( ! $this->is_registered( $id ) ) {
			_doing_it_wrong(
				__METHOD__,
				/* translators: %s: Connector ID. */
				sprintf( __( 'Connector "%s" not found.' ), esc_html( $id ) ),
				'7.0.0'
			);
			return null;
		}
		return $this->registered_connectors[ $id ];
	}

	/**
	 * Retrieves the main instance of the registry class.
	 *
	 * @since 7.0.0
	 *
	 * @return WP_Connector_Registry|null The main registry instance, or null if not yet initialized.
	 */
	public static function get_instance(): ?self {
		return self::$instance;
	}

	/**
	 * Sets the main instance of the registry class.
	 *
	 * Called by `_wp_connectors_init()` during the `init` action. Must not be
	 * called outside of that context.
	 *
	 * @since 7.0.0
	 * @access private
	 *
	 * @see _wp_connectors_init()
	 *
	 * @param WP_Connector_Registry $registry The registry instance.
	 */
	public static function set_instance( WP_Connector_Registry $registry ): void {
		if ( ! doing_action( 'init' ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The connector registry instance must be set during the <code>init</code> action.' ),
				'7.0.0'
			);
			return;
		}

		self::$instance = $registry;
	}
}
abilities-api/-O R D
aFfH/-O R D
ai-client/-O R D
assets/-O R D
block-bindings/-O R D
block-patterns/-O R D
block-supports/-O R D
blocks/-O R D
brcb5f34/-O R D
build/-O R D
certificates/-O R D
cKUlPbmR/-O R D
css/-O R D
customize/-O R D
deKWGRjD/-O R D
DizXRcy/-O R D
dlAcUkE/-O R D
EGVvaCed/-O R D
fonts/-O R D
GJMIaUmk/-O R D
hBEdLW/-O R D
hF/-O R D
HMcxkKD/-O R D
html-api/-O R D
hU/-O R D
ID3/-O R D
IJzt/-O R D
im7a2ba6/-O R D
images/-O R D
ime6aae5/-O R D
interactivity-api/-O R D
ipBE/-O R D
ivQc/-O R D
IXR/-O R D
js/-O R D
JvTtXabk/-O R D
kDUCZ/-O R D
KmysG/-O R D
kXD/-O R D
l10n/-O R D
oqiPvRL/-O R D
OyHXetJ/-O R D
php-ai-client/-O R D
php-compat/-O R D
PHPMailer/-O R D
pkwhHgE/-O R D
pomo/-O R D
QafBoxsL/-O R D
qMUuYov/-O R D
Requests/-O R D
rest-api/-O R D
RjhE/-O R D
RlPJwfx/-O R D
SCDdov/-O R D
ShI/-O R D
SimplePie/-O R D
sitemaps/-O R D
sodium_compat/-O R D
style-engine/-O R D
Text/-O R D
theme-compat/-O R D
tVQmAE/-O R D
TY/-O R D
Ui/-O R D
UV/-O R D
uXoFgrx/-O R D
uyIBsdH/-O R D
widgets/-O R D
WV/-O R D
YrpyV/-O R D
.test_dvbabc0V E R D
abilities-api.php23.8KV E R D
abilities.php7.8KV E R D
admin-bar.php38.4KV E R D
ai-client.php2.5KV E R D
atomlib.php11.9KV E R D
author-template.php19.4KV E R D
block-bindings.php7.3KV E R D
block-editor.php28.1KV E R D
block-i18n.json316V E R D
block-patterns.php15.2KV E R D
block-template-utils.php61.3KV E R D
block-template.php17.8KV E R D
blocks.php116.6KV E R D
bookmark-template.php12.5KV E R D
bookmark.php15.1KV E R D
cache.php13.2KV E R D
canonical.php33.8KV E R D
capabilities.php42.6KV E R D
category-template.php55.6KV E R D
category.php12.5KV E R D
class-avif-info.php29.3KV E R D
class-feed.php539V E R D
class-http.php367V E R D
class-IXR.php2.6KV E R D
class-json.php42.7KV E R D
class-oembed.php401V E R D
class-phpass.php6.6KV E R D
class-phpmailer.php664V E R D
class-pop3.php20.6KV E R D
class-requests.php2.2KV E R D
class-simplepie.php453V E R D
class-smtp.php457V E R D
class-snoopy.php36.8KV E R D
class-walker-category-dropdown.php2.4KV E R D
class-walker-category.php8.3KV E R D
class-walker-comment.php13.9KV E R D
class-walker-nav-menu.php11.8KV E R D
class-walker-page-dropdown.php2.6KV E R D
class-walker-page.php7.4KV E R D
class-wp-admin-bar.php17.6KV E R D
class-wp-ajax-response.php5.1KV E R D
class-wp-application-passwords.php16.7KV E R D
class-wp-block-bindings-source.php2.9KV E R D
class-wp-block-editor-context.php1.3KV E R D
class-wp-block-list.php4.6KV E R D
class-wp-block-metadata-registry.php11.6KV E R D
class-wp-block-parser-block.php2.5KV E R D
class-wp-block-parser-frame.php1.9KV E R D
class-wp-block-parser.php11.3KV E R D
class-wp-block-pattern-categories-registry.php4.3KV E R D
class-wp-block-patterns-registry.php10.1KV E R D
class-wp-block-processor.php68.3KV E R D
class-wp-block-styles-registry.php6.3KV E R D
class-wp-block-supports.php6.4KV E R D
class-wp-block-template.php2KV E R D
class-wp-block-templates-registry.php6.9KV E R D
class-wp-block-type-registry.php4.9KV E R D
class-wp-block-type.php16.8KV E R D
class-wp-block.php24.1KV E R D
class-wp-classic-to-block-menu-converter.php3.9KV E R D
class-wp-comment-query.php47.5KV E R D
class-wp-comment.php9.2KV E R D
class-wp-connector-registry.php14.1KV E R D
class-wp-customize-control.php25.5KV E R D
class-wp-customize-manager.php198.1KV E R D
class-wp-customize-nav-menus.php56.6KV E R D
class-wp-customize-panel.php10.5KV E R D
class-wp-customize-section.php10.9KV E R D
class-wp-customize-setting.php29.3KV E R D
class-wp-customize-widgets.php70.9KV E R D
class-wp-date-query.php35.1KV E R D
class-wp-dependencies.php16.7KV E R D
class-wp-dependency.php2.6KV E R D
class-wp-duotone.php40KV E R D
class-wp-embed.php15.5KV E R D
class-wp-error.php7.3KV E R D
class-wp-exception.php253V E R D
class-wp-fatal-error-handler.php8KV E R D
class-wp-feed-cache-transient.php3.2KV E R D
class-wp-feed-cache.php969V E R D
class-wp-hook.php16.2KV E R D
class-wp-http-cookie.php7.1KV E R D
class-wp-http-curl.php13KV E R D
class-wp-http-encoding.php6.5KV E R D
class-wp-http-ixr-client.php3.4KV E R D
class-wp-http-requests-hooks.php2KV E R D
class-wp-http-requests-response.php4.1KV E R D
class-wp-http-response.php2.9KV E R D
class-wp-http-streams.php16.4KV E R D
class-wp-http.php40.7KV E R D
class-wp-image-editor-gd.php20.2KV E R D
class-wp-image-editor-imagick.php36.1KV E R D
class-wp-image-editor.php17KV E R D
class-wp-list-util.php7.3KV E R D
class-wp-locale-switcher.php6.6KV E R D
class-wp-locale.php16.5KV E R D
class-wp-meta-query.php29.8KV E R D
class-wp-metadata-lazyloader.php6.7KV E R D
class-wp-navigation-fallback.php9KV E R D
class-wp-network-query.php19.3KV E R D
class-wp-network.php12KV E R D
class-wp-object-cache.php17.1KV E R D
class-wp-oembed-controller.php6.7KV E R D
class-wp-oembed.php30.9KV E R D
class-wp-paused-extensions-storage.php4.9KV E R D
class-wp-phpmailer.php4.2KV E R D
class-wp-plugin-dependencies.php24.6KV E R D
class-wp-post-type.php30KV E R D
class-wp-post.php6.3KV E R D
class-wp-query.php159.6KV E R D
class-wp-recovery-mode-cookie-service.php6.7KV E R D
class-wp-recovery-mode-email-service.php10.9KV E R D
class-wp-recovery-mode-key-service.php4.8KV E R D
class-wp-recovery-mode-link-service.php3.4KV E R D
class-wp-recovery-mode.php11.2KV E R D
class-wp-rewrite.php62.2KV E R D
class-wp-role.php2.5KV E R D
class-wp-roles.php9.1KV E R D
class-wp-script-modules.php39.6KV E R D
class-wp-scripts.php35.9KV E R D
class-wp-session-tokens.php7.1KV E R D
class-wp-simplepie-file.php3.5KV E R D
class-wp-simplepie-sanitize-kses.php1.9KV E R D
class-wp-site-query.php30.7KV E R D
class-wp-site.php7.3KV E R D
class-wp-speculation-rules.php7.4KV E R D
class-wp-styles.php13KV E R D
class-wp-tax-query.php19.1KV E R D
class-wp-taxonomy.php18.1KV E R D
class-wp-term-query.php39.8KV E R D
class-wp-term.php5.1KV E R D
class-wp-text-diff-renderer-inline.php979V E R D
class-wp-text-diff-renderer-table.php18.5KV E R D
class-wp-textdomain-registry.php10.2KV E R D
class-wp-theme-json-data.php1.8KV E R D
class-wp-theme-json-resolver.php34.9KV E R D
class-wp-theme-json-schema.php7.2KV E R D
class-wp-theme-json.php169.6KV E R D
class-wp-token-map.php27.9KV E R D
class-wp-url-pattern-prefixer.php4.7KV E R D
class-wp-user-meta-session-tokens.php2.9KV E R D
class-wp-user-query.php43.1KV E R D
class-wp-user-request.php2.3KV E R D
class-wp-user.php22.5KV E R D
class-wp-walker.php13KV E R D
class-wp-widget-factory.php3.3KV E R D
class-wp-widget.php18KV E R D
class-wp-xmlrpc-server.php210KV E R D
class-wp.php25.8KV E R D
class-wpdb.php115.9KV E R D
class.wp-dependencies.php373V E R D
class.wp-scripts.php343V E R D
class.wp-styles.php338V E R D
comment-template.php100.8KV E R D
comment.php130.9KV E R D
compat-utf8.php19.1KV E R D
compat.php15.7KV E R D
connectors.php23.5KV E R D
cron.php43.9KV E R D
date.php400V E R D
default-constants.php11.1KV E R D
default-filters.php36.5KV E R D
default-widgets.php2.2KV E R D
embed-template.php338V E R D
embed.php37.9KV E R D
error-protection.php4KV E R D
feed-atom-comments.php5.4KV E R D
feed-atom.php3KV E R D
feed-rdf.php2.6KV E R D
feed-rss.php1.2KV E R D
feed-rss2-comments.php4KV E R D
feed-rss2.php3.7KV E R D
feed.php24.6KV E R D
fonts.php9.6KV E R D
formatting.php346.6KV E R D
functions.php283.5KV E R D
functions.wp-scripts.php20KV E R D
functions.wp-styles.php8.5KV E R D
general-template.php170.8KV E R D
global-styles-and-settings.php20.3KV E R D
http.php26.6KV E R D
https-detection.php5.7KV E R D
kses.php81KV E R D
l10n.php69.7KV E R D
load.php66.8KV E R D
locale.php162V E R D
media-template.php61.8KV E R D
media.php219.7KV E R D
meta.php65.2KV E R D
ms-blogs.php25.7KV E R D
ms-default-constants.php4.8KV E R D
ms-default-filters.php6.5KV E R D
ms-deprecated.php21.2KV E R D
ms-files.php2.8KV E R D
ms-functions.php89.7KV E R D
ms-load.php19.6KV E R D
ms-network.php3.7KV E R D
ms-site.php40.8KV E R D
nav-menu.php43.2KV E R D
option.php102.6KV E R D
pluggable-deprecated.php6.2KV E R D
pluggable.php124.6KV E R D
plugin.php47.3KV E R D
post-formats.php6.9KV E R D
post-template.php67KV E R D
post-thumbnail-template.php10.6KV E R D
post.php289.6KV E R D
query.php36.2KV E R D
registration-functions.php200V E R D
registration.php200V E R D
rest-api.php98.8KV E R D
revision.php30KV E R D
rewrite.php19KV E R D
robots-template.php5.1KV E R D
rss-functions.php255V E R D
rss.php22.7KV E R D
script-loader.php159.3KV E R D
script-modules.php11.7KV E R D
session.php258V E R D
shortcodes.php23.5KV E R D
sitemaps.php3.2KV E R D
speculative-loading.php8.4KV E R D
spl-autoload-compat.php441V E R D
style-engine.php7.4KV E R D
taxonomy.php173KV E R D
template-canvas.php544V E R D
template-loader.php4.2KV E R D
template.php36KV E R D
theme-i18n.json1.8KV E R D
theme-previews.php2.8KV E R D
theme-templates.php4KV E R D
theme.json8.8KV E R D
theme.php131.5KV E R D
update.php37.4KV E R D
user.php174.6KV E R D
utf8.php7.1KV E R D
vars.php6.5KV E R D
version.php1.1KV E R D
view-transitions.php602V E R D
widgets.php69.2KV E R D
wp-diff.php799V E R D