asset_manager = $asset_manager; $this->blocks_conditional = $blocks_conditional; $this->short_link_helper = $short_link_helper; } /** * Initializes the integration. * * This is the place to register hooks and filters. * * @return void */ public function register_hooks() { \add_action( 'enqueue_block_editor_assets', [ $this, 'load' ] ); \add_action( 'enqueue_block_editor_assets', [ $this, 'load_translations' ] ); \add_action( 'admin_enqueue_scripts', [ $this, 'output' ] ); } /** * Registers a schema template. * * @param string $template The template to be registered. * If starting with a / is assumed to be an absolute path. * If not starting with a / is assumed to be relative to WPSEO_PATH. * * @return void */ public function register_template( $template ) { if ( \substr( $template, 0, 1 ) !== '/' ) { $template = \WPSEO_PATH . '/' . $template; } $this->templates[] = $template; } /** * Loads all schema block templates and the required JS library for them. * * @return void */ public function load() { $this->asset_manager->enqueue_script( 'schema-blocks' ); $this->asset_manager->enqueue_style( 'schema-blocks' ); $this->asset_manager->localize_script( 'schema-blocks', 'yoastSchemaBlocks', [ 'requiredLink' => $this->short_link_helper->build( 'https://yoa.st/required-fields' ), 'recommendedLink' => $this->short_link_helper->build( 'https://yoa.st/recommended-fields' ), ] ); } /** * Outputs the set templates. */ public function output() { if ( ! $this->asset_manager->is_script_enqueued( 'schema-blocks' ) ) { return; } $templates = []; // When the schema blocks feature flag is enabled, use the registered templates. if ( $this->blocks_conditional->is_met() ) { $templates = $this->templates; } /** * Filter: 'wpseo_load_schema_templates' - Allow adding additional schema templates. * * @param array $templates The templates to filter. */ $templates = \apply_filters( 'wpseo_load_schema_templates', $templates ); if ( ! \is_array( $templates ) || empty( $templates ) ) { return; } foreach ( $templates as $template ) { if ( ! \file_exists( $template ) ) { continue; } // `.schema` and other suffixes become Schema (root) templates. $type = ( \substr( $template, -10 ) === '.block.php' ) ? 'block' : 'schema'; echo ''; } } /** * Loads the translations and localizes the schema-blocks script file. * * @codeCoverageIgnore * @deprecated 18.0 */ public function load_translations() { _deprecated_function( __FUNCTION__, '18.0' ); } }