Yoast\WP\SEO\Dashboard\User_Interface\Time_Based_SEO_Metrics

Time_Based_SEO_Metrics_Route::get_time_based_seo_metrics()publicYoast 1.0

Gets the time based SEO metrics.

Метод класса: Time_Based_SEO_Metrics_Route{}

Хуков нет.

Возвращает

WP_REST_Response. The success or failure response.

Использование

$Time_Based_SEO_Metrics_Route = new Time_Based_SEO_Metrics_Route();
$Time_Based_SEO_Metrics_Route->get_time_based_seo_metrics( $request ): WP_REST_Response;
$request(WP_REST_Request) (обязательный)
The request object.

Код Time_Based_SEO_Metrics_Route::get_time_based_seo_metrics() Yoast 25.1

public function get_time_based_seo_metrics( WP_REST_Request $request ): WP_REST_Response {
	try {
		$widget_name = $request->get_param( 'options' )['widget'];

		switch ( $widget_name ) {
			case 'query':
				$request_parameters = new Search_Console_Parameters();

				$request_parameters = $this->set_date_range_parameters( $request_parameters );
				$request_parameters->set_limit( $request->get_param( 'limit' ) );
				$request_parameters->set_dimensions( [ 'query' ] );

				$time_based_seo_metrics_container = $this->top_query_repository->get_data( $request_parameters );
				break;
			case 'page':
				$request_parameters = new Search_Console_Parameters();

				$request_parameters = $this->set_date_range_parameters( $request_parameters );
				$request_parameters->set_limit( $request->get_param( 'limit' ) );
				$request_parameters->set_dimensions( [ 'page' ] );

				$time_based_seo_metrics_container = $this->top_page_repository->get_data( $request_parameters );
				break;
			case 'organicSessionsDaily':
				$request_parameters = new Analytics_4_Parameters();

				$request_parameters = $this->set_date_range_parameters( $request_parameters );
				$request_parameters->set_dimensions( [ 'date' ] );
				$request_parameters->set_metrics( [ 'sessions' ] );
				$request_parameters->set_dimension_filters( [ 'sessionDefaultChannelGrouping' => [ 'Organic Search' ] ] );
				$request_parameters->set_order_by( 'dimension', 'date' );

				$time_based_seo_metrics_container = $this->organic_sessions_daily_repository->get_data( $request_parameters );
				break;
			case 'organicSessionsCompare':
				$request_parameters = new Analytics_4_Parameters();

				$request_parameters = $this->set_date_range_parameters( $request_parameters );
				$request_parameters = $this->set_comparison_date_range_parameters( $request_parameters );
				$request_parameters->set_metrics( [ 'sessions' ] );
				$request_parameters->set_dimension_filters( [ 'sessionDefaultChannelGrouping' => [ 'Organic Search' ] ] );

				$time_based_seo_metrics_container = $this->organic_sessions_compare_repository->get_data( $request_parameters );
				break;
			case 'searchRankingCompare':
				$request_parameters = new Search_Console_Parameters();

				$request_parameters = $this->set_date_range_parameters( $request_parameters );
				$request_parameters = $this->set_comparison_date_range_parameters( $request_parameters );
				$request_parameters->set_dimensions( [ 'date' ] );

				$time_based_seo_metrics_container = $this->search_ranking_compare_repository->get_data( $request_parameters );
				break;
			default:
				throw new Repository_Not_Found_Exception();
		}
	} catch ( Exception $exception ) {
		return new WP_REST_Response(
			[
				'error' => $exception->getMessage(),
			],
			$exception->getCode()
		);
	}

	return new WP_REST_Response(
		$time_based_seo_metrics_container->to_array(),
		200
	);
}