WP_REST_Themes_Controller::prepare_item_for_response() – Prepares a single theme output for response.

You appear to be a bot. Output may be restricted

Description

Prepares a single theme output for response.

Usage

$WP_REST_Response = WP_REST_Themes_Controller::prepare_item_for_response( $item, $request );

Parameters

$item
( WP_Theme ) required – Theme object.
$request
( WP_REST_Request ) required – Request object.

Returns

WP_REST_Response Response object.

Source

File name: wordpress/wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php


Lines:

1 to 100 of 151
  public function prepare_item_for_response( $item, $request ) {
    // Restores the more descriptive, specific name for use within this method.
    $theme  = $item;
    $data   = array();
    $fields = $this->get_fields_for_response( $request );

    if ( rest_is_field_included( 'stylesheet', $fields ) ) {
      $data['stylesheet'] = $theme->get_stylesheet();
    }

    if ( rest_is_field_included( 'template', $fields ) ) {
      
/**
 * Use the get_template() method, not the 'Template' header, for finding the template.
 * The 'Template' header is only good for what was written in the style.css, while
 * get_template() takes into account where WordPress actually located the theme and
 * whether it is actually valid.
 */
      $data['template'] = $theme->get_template();
    }

    $plain_field_mappings = array(
      'requires_php' => 'RequiresPHP',
      'requires_wp'  => 'RequiresWP',
      'textdomain'   => 'TextDomain',
      'version'      => 'Version',
    );

    foreach ( $plain_field_mappings as $field => $header ) {
      if ( rest_is_field_included( $field, $fields ) ) {
        $data[ $field ] = $theme->get( $header );
      }
    }

    if ( rest_is_field_included( 'screenshot', $fields ) ) {
      // Using $theme->get_screenshot() with no args to get absolute URL.
      $data['screenshot'] = $theme->get_screenshot() ? $theme->get_screenshot() : '';
    }

    $rich_field_mappings = array(
      'author'      => 'Author',
      'author_uri'  => 'AuthorURI',
      'description' => 'Description',
      'name'        => 'Name',
      'tags'        => 'Tags',
      'theme_uri'   => 'ThemeURI',
    );

    foreach ( $rich_field_mappings as $field => $header ) {
      if ( rest_is_field_included( "{$field}.raw", $fields ) ) {
        $data[ $field ]['raw'] = $theme->display( $header, false, true );
      }

      if ( rest_is_field_included( "{$field}.rendered", $fields ) ) {
        $data[ $field ]['rendered'] = $theme->display( $header );
      }
    }

    $current_theme = wp_get_theme();
    if ( rest_is_field_included( 'status', $fields ) ) {
      $data['status'] = ( $this->is_same_theme( $theme, $current_theme ) ) ? 'active' : 'inactive';
    }

    if ( rest_is_field_included( 'theme_supports', $fields ) && $this->is_same_theme( $theme, $current_theme ) ) {
      foreach ( get_registered_theme_features() as $feature => $config ) {
        if ( ! is_array( $config['show_in_rest'] ) ) {
          continue;
        }

        $name = $config['show_in_rest']['name'];

        if ( ! rest_is_field_included( "theme_supports.{$name}", $fields ) ) {
          continue;
        }

        if ( ! current_theme_supports( $feature ) ) {
          $data['theme_supports'][ $name ] = $config['show_in_rest']['schema']['default'];
          continue;
        }

        $support = get_theme_support( $feature );

        if ( isset( $config['show_in_rest']['prepare_callback'] ) ) {

 View on GitHub View on Trac