WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
класс не описан

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.

Ищем WP-разработчика! Фулл-тайм, удаленка, хорошая зарплата, соц. пакет. Подробности.
Компания Boosta.

Хуков нет.

Возвращает

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 17.4

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 );

		// Decrease a chance of "cURL 28 (timeout)" errors by increasing the timeout to 10 seconds.
		$args     = [ 'timeout' => 10 ];
		$response = wp_remote_get( $url, $args );

		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 );
	}
}