WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Получай пассивный доход от сайта с помощью браузерных PUSH уведомлений
класс не описан

WPSEO_Ryte_Request{} Yoast 1.0

This class will fetch a new status from Ryte and if it's necessary it will notify the site admin by email and remove the current meta value to hide the notice for all admin users.

Хуков нет.

Возвращает

null. Ничего.

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

$WPSEO_Ryte_Request = new WPSEO_Ryte_Request();
// use class methods

Методы

  1. do_request( $target_url, $parameters = [] )
  2. get_remote( $target_url, $parameters = [] )
  3. process_response( $response )

Код WPSEO_Ryte_Request{} Yoast 16.2

<?php
class WPSEO_Ryte_Request {

	/**
	 * The endpoint where the request will be send to.
	 *
	 * @var string
	 */
	private $ryte_endpoint = 'https://indexability.yoast.onpage.org/';

	/**
	 * Gets the response from the Ryte API and returns the body.
	 *
	 * @param string $target_url The URL to check indexability for.
	 * @param array  $parameters Array of extra parameters to send to the Ryte API.
	 *
	 * @return array The successful response or the error details.
	 */
	protected function get_remote( $target_url, $parameters = [] ) {
		$defaults = [
			'url'          => $target_url,
			'wp_version'   => $GLOBALS['wp_version'],
			'yseo_version' => WPSEO_VERSION,
		];

		$parameters = array_merge( $defaults, $parameters );
		$url        = add_query_arg( $parameters, $this->ryte_endpoint );
		$response   = wp_remote_get( $url );

		return $this->process_response( $response );
	}

	/**
	 * Sends a request to the Ryte API to check whether a URL is indexable.
	 *
	 * @param string $target_url The URL to check indexability for.
	 * @param array  $parameters Array of extra parameters to send to the Ryte API.
	 *
	 * @return array
	 */
	public function do_request( $target_url, $parameters = [] ) {
		$json_body = $this->get_remote( $target_url, $parameters );

		// Ryte recognized a redirect, fetch the data of that URL by calling this method with the value from Ryte.
		if ( ! empty( $json_body['passes_juice_to'] ) ) {
			return $this->do_request( $json_body['passes_juice_to'], $parameters );
		}

		return $json_body;
	}

	/**
	 * Processes the given Ryte response.
	 *
	 * @param array|WP_Error $response The response or WP_Error to process.
	 *
	 * @return array The response body or the error detaiils on failure.
	 */
	protected function process_response( $response ) {
		// Most of the potential errors are WP_Error(s).
		if ( is_wp_error( $response ) ) {
			return [
				'is_error'       => true,
				'raw_error_code' => '',
				// WP_Error codes aren't that helpful for users, let's display them in a less prominent way.
				'wp_error_code'  => '(' . $response->get_error_code() . ')',
				'message'        => $response->get_error_message(),
			];
		}

		/*
		 * As of February 2020 the Ryte API returns an error 500 for non-reachable
		 * sites. There's also the need to handle any potential raw HTTP error.
		 */
		if ( wp_remote_retrieve_response_code( $response ) !== 200 ) {
			// Not all HTTP errors may have a response message. Let's provide a default one.
			$response_message = wp_remote_retrieve_response_message( $response );
			$message          = ( $response_message ) ? $response_message : __( 'The request to Ryte returned an error.', 'wordpress-seo' );

			return [
				'is_error'       => true,
				'raw_error_code' => wp_remote_retrieve_response_code( $response ),
				'wp_error_code'  => '',
				'message'        => $message,
			];
		}

		// When the request is successful, the response code will be 200.
		$response_body = wp_remote_retrieve_body( $response );

		return json_decode( $response_body, true );
	}
}