# wordpress-seo/trunk/src/schema-aggregator/application/aggregate-site-schema-command-handler.php

Yoast SEO – Advanced SEO with real-time guidance and built-in AI, version trunk. 70 lines.

- Page: https://pluginprobe.com/plugins/wordpress-seo/trunk/code/src/schema-aggregator/application/aggregate-site-schema-command-handler.php
- Raw: https://pluginprobe.com/plugins/wordpress-seo/trunk/raw/src/schema-aggregator/application/aggregate-site-schema-command-handler.php
- Modified: 2026-02-24T09:39:48+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/wordpress-seo/trunk/code/src/schema-aggregator/application/aggregate-site-schema-command-handler.php#L10-L20`.

```php
<?php

// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.
namespace Yoast\WP\SEO\Schema_Aggregator\Application;

use Yoast\WP\SEO\Schema_Aggregator\Domain\Schema_Piece_Repository_Interface;

/**
 * Class that handles the Aggregate_Site_Schema_Command.
 */
class Aggregate_Site_Schema_Command_Handler {

	/**
	 * The Schema_Piece_Repository instance.
	 *
	 * @var Schema_Piece_Repository_Interface
	 */
	private $schema_piece_repository;

	/**
	 * The Schema_Pieces_Aggregator instance.
	 *
	 * @var Schema_Pieces_Aggregator
	 */
	private $schema_piece_aggregator;

	/**
	 * The Schema_Aggregator_Response_Composer instance.
	 *
	 * @var Schema_Aggregator_Response_Composer
	 */
	private $schema_response_composer;

	/**
	 * Aggregate_Site_Schema_Command_Handler constructor.
	 *
	 * @param Schema_Piece_Repository_Interface   $schema_piece_repository  The collector of indexables that need to be aggregated.
	 * @param Schema_Pieces_Aggregator            $schema_piece_aggregator  The schema pieces aggregator.
	 * @param Schema_Aggregator_Response_Composer $schema_response_composer The schema response composer.
	 */
	public function __construct(
		Schema_Piece_Repository_Interface $schema_piece_repository,
		Schema_Pieces_Aggregator $schema_piece_aggregator,
		Schema_Aggregator_Response_Composer $schema_response_composer
	) {
		$this->schema_piece_repository  = $schema_piece_repository;
		$this->schema_piece_aggregator  = $schema_piece_aggregator;
		$this->schema_response_composer = $schema_response_composer;
	}

	/**
	 * Handles the Aggregate_Site_Schema_Command.
	 *
	 * @param Aggregate_Site_Schema_Command $command The command.
	 *
	 * @return array<string> The aggregated schema.
	 */
	public function handle( Aggregate_Site_Schema_Command $command ): array {

		$schema_pieces = $this->schema_piece_repository->get(
			$command->get_page_controls()->get_page(),
			$command->get_page_controls()->get_page_size(),
			$command->get_page_controls()->get_post_type(),
		);

		$aggregated_schema_pieces = $this->schema_piece_aggregator->aggregate( $schema_pieces );
		return $this->schema_response_composer->compose( $aggregated_schema_pieces );
	}
}

```
