• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
Yoast SEO a2z

Yoast SEO a2z

WordPress SEO a2z

  • Home
  • Plugins
  • Blocks
  • Shortcodes
  • APIs
  • Classes
  • Files
  • Hooks
  • Sitemap
  • Blog
Home / APIs / Schema_Generator::generate() – Returns a Schema graph array.

You appear to be a bot. Output may be restricted

Description

Returns a Schema graph array.

Usage

$array = Schema_Generator::generate( $context );

Parameters

$context
( Meta_Tags_Context ) required – The meta tags context.

Returns

array The graph.

Source

File name: wordpress-seo/src/generators/schema-generator.php


Lines:

1 to 100 of 102
  public function generate( Meta_Tags_Context $context ) {
    $graph = [];

    $pieces = $this->get_graph_pieces( $context );

    foreach ( \array_keys( $context->blocks ) as $block_type ) {
      
/**
 * Filter: 'wpseo_pre_schema_block_type_<block-type>' - Allows hooking things to change graph output based on the blocks on the page.
 *
 * @param string                  $block_type The block type.
 * @param WP_Block_Parser_Block[] $blocks     All the blocks of this block type.
 * @param Meta_Tags_Context       $context    A value object with context variables.
 */
      \do_action( 'wpseo_pre_schema_block_type_' . $block_type, $context->blocks[ $block_type ], $context );
    }

    // Do a loop before everything else to inject the context and helpers.
    foreach ( $pieces as $piece ) {
      if ( \is_a( $piece, Abstract_Schema_Piece::class ) ) {
        $piece->context = $context;
        $piece->helpers = $this->helpers;
      }
    }

    $pieces_to_generate = [];
    foreach ( $pieces as $piece ) {
      $identifier = \strtolower( \str_replace( 'Yoast\WP\SEO\Generators\Schema\\', '', \get_class( $piece ) ) );
      if ( \property_exists( $piece, 'identifier' ) ) {
        $identifier = $piece->identifier;
      }

      
/**
 * Filter: 'wpseo_schema_needs_<identifier>' - Allows changing which graph pieces we output.
 *
 * @api bool $is_needed Whether or not to show a graph piece.
 */
      $is_needed = \apply_filters( 'wpseo_schema_needs_' . $identifier, $piece->is_needed() );
      if ( ! $is_needed ) {
        continue;
      }

      $pieces_to_generate[ $identifier ] = $piece;
    }

    foreach ( $pieces_to_generate as $identifier => $piece ) {
      $graph_pieces = $piece->generate();
      // If only a single graph piece was returned.
      if ( $graph_pieces !== false && \array_key_exists( '@type', $graph_pieces ) ) {
        $graph_pieces = [ $graph_pieces ];
      }

      if ( ! \is_array( $graph_pieces ) ) {
        continue;
      }

      foreach ( $graph_pieces as $graph_piece ) {
        
/**
 * Filter: 'wpseo_schema_<identifier>' - Allows changing graph piece output.
 *
 * @api array $graph_piece The graph piece to filter.
 *
 * @param Meta_Tags_Context $context A value object with context variables.
 */
        $graph_piece = \apply_filters( 'wpseo_schema_' . $identifier, $graph_piece, $context );
        $graph_piece = $this->type_filter( $graph_piece, $identifier, $context );
        $graph_piece = $this->validate_type( $graph_piece );

        if ( \is_array( $graph_piece ) ) {
          $graph[] = $graph_piece;
        }
      }
    }

    foreach ( $context->blocks as $block_type => $blocks ) {
      foreach ( $blocks as $block ) {
        
/**
 * Filter: 'wpseo_schema_block_<block-type>' - Allows filtering graph output per block.
 *
 * @param WP_Block_Parser_Block $block   The block.
 * @param Meta_Tags_Context     $context A value object with context variables.
 *
 * @api array $graph Our Schema output.
 */
        $block_type = \strtolower( $block['blockName'] );
        $graph      = \apply_filters( 'wpseo_schema_block_' . $block_type, $graph, $block, $context );

        if ( isset( $block['attrs']['yoast-schema'] ) ) {
          $graph[] = $block['attrs']['yoast-schema'];
        }
      }
    }

    return [
      '@context' => 'https://schema.org',
      '@graph'   => $graph,
    ];
[1] [2] Next »

 View on GitHub View on Trac

Published: 2nd May 2020 | Last updated: 10th December 2020

Primary Sidebar

Information

Function name: Schema_Generator::generate
Class ref: Schema_Generator
Plugin ref: Yoast SEO
Version: 15.4
Sourcefile: src/generators/schema-generator.php
File ref: src/generators/schema-generator.php
Deprecated?: No
API Letters: G,S

Footer

Yoast SEO a2z
Yoast SEO a2z
WordPress SEO a2z
WordPress 5.6
WordPress a2z
WordPress core a2z
Genesis Theme Framework a2z
Jetpack a2z
WordPress develop tests
Easy Digital Downloads a2z
WooCommerce a2z
Yoast SEO a2z
WordPress Blocks

Site:  wordpress-seo.wp-a2z.org
© Copyright Yoast SEO a2z 2017-2021. All rights reserved.


Website designed and developed by Herb Miller
Proudly powered by WordPress and oik plugins

  • Home
  • Blog
  • Sitemap
  • Sites