WP_REST_URL_Details_Controller::parse_url_details() – Retrieves the contents of the `<title>` tag from the HTML response.

You appear to be a bot. Output may be restricted

Description

Retrieves the contents of the title tag from the HTML response.

Usage

$WP_REST_Response|WP_Error = WP_REST_URL_Details_Controller::parse_url_details( $request );

Parameters

$request
( WP_REST_REQUEST ) required – Full details about the request.

Returns

WP_REST_Response|WP_Error The parsed details as a response object. WP_Error if there are errors.

Source

File name: wordpress/wp-includes/rest-api/endpoints/class-wp-rest-url-details-controller.php
Lines:

1 to 55 of 55
  public function parse_url_details( $request ) {
    $url = untrailingslashit( $request['url'] );

    if ( empty( $url ) ) {
      return new WP_Error( 'rest_invalid_url', __( 'Invalid URL' ), array( 'status' => 404 ) );
    }

    // Transient per URL.
    $cache_key = $this->build_cache_key_for_url( $url );

    // Attempt to retrieve cached response.
    $cached_response = $this->get_cache( $cache_key );

    if ( ! empty( $cached_response ) ) {
      $remote_url_response = $cached_response;
    } else {
      $remote_url_response = $this->get_remote_url( $url );

      // Exit if we don't have a valid body or it's empty.
      if ( is_wp_error( $remote_url_response ) || empty( $remote_url_response ) ) {
        return $remote_url_response;
      }

      // Cache the valid response.
      $this->set_cache( $cache_key, $remote_url_response );
    }

    $html_head     = $this->get_document_head( $remote_url_response );
    $meta_elements = $this->get_meta_with_content_elements( $html_head );

    $data = $this->add_additional_fields_to_object(
      array(
        'title'       => $this->get_title( $html_head ),
        'icon'        => $this->get_icon( $html_head, $url ),
        'description' => $this->get_description( $meta_elements ),
        'image'       => $this->get_image( $meta_elements, $url ),
      ),
      $request
    );

    // Wrap the data in a response object.
    $response = rest_ensure_response( $data );

    
/**
 * Filters the URL data for the response.
 *
 * @since 5.9.0
 *
 * @param WP_REST_Response $response            The response object.
 * @param string           $url                 The requested URL.
 * @param WP_REST_Request  $request             Request object.
 * @param string           $remote_url_response HTTP response body from the remote URL.
 */
    return apply_filters( 'rest_prepare_url_details', $response, $url, $request, $remote_url_response );
  }
 

 View on GitHub View on Trac