Title: WP_REST_Global_Styles_Revisions_Controller::get_items
Published: August 8, 2023
Last modified: May 20, 2026

---

# WP_REST_Global_Styles_Revisions_Controller::get_items( WP_REST_Request $request ): 󠀁[WP_REST_Response](https://developer.wordpress.org/reference/classes/wp_rest_response/)󠁿|󠀁[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)󠁿

## In this article

 * [Description](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#description)
 * [Parameters](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#wp--skip-link--target)

Returns paginated revisions of the given global styles config custom post type.

## 󠀁[Description](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#description)󠁿

The bulk of the body is taken from [WP_REST_Revisions_Controller](https://developer.wordpress.org/reference/classes/wp_rest_revisions_controller/)-
>get_items, but global styles does not require as many parameters.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#parameters)󠁿

 `$request`[WP_REST_Request](https://developer.wordpress.org/reference/classes/wp_rest_request/)
required

The request instance.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#return)󠁿

 [WP_REST_Response](https://developer.wordpress.org/reference/classes/wp_rest_response/)
|[WP_Error](https://developer.wordpress.org/reference/classes/wp_error/)

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#source)󠁿

    ```php
    public function get_items( $request ) {
    	$parent = $this->get_parent( $request['parent'] );

    	if ( is_wp_error( $parent ) ) {
    		return $parent;
    	}

    	$global_styles_config = $this->get_decoded_global_styles_json( $parent->post_content );

    	if ( is_wp_error( $global_styles_config ) ) {
    		return $global_styles_config;
    	}

    	$is_head_request = $request->is_method( 'HEAD' );

    	if ( wp_revisions_enabled( $parent ) ) {
    		$registered = $this->get_collection_params();
    		$query_args = array(
    			'post_parent'    => $parent->ID,
    			'post_type'      => 'revision',
    			'post_status'    => 'inherit',
    			'posts_per_page' => -1,
    			'orderby'        => 'date ID',
    			'order'          => 'DESC',
    		);

    		$parameter_mappings = array(
    			'offset'   => 'offset',
    			'page'     => 'paged',
    			'per_page' => 'posts_per_page',
    		);

    		foreach ( $parameter_mappings as $api_param => $wp_param ) {
    			if ( isset( $registered[ $api_param ], $request[ $api_param ] ) ) {
    				$query_args[ $wp_param ] = $request[ $api_param ];
    			}
    		}

    		if ( $is_head_request ) {
    			// Force the 'fields' argument. For HEAD requests, only post IDs are required to calculate pagination.
    			$query_args['fields'] = 'ids';
    			// Disable priming post meta for HEAD requests to improve performance.
    			$query_args['update_post_term_cache'] = false;
    			$query_args['update_post_meta_cache'] = false;
    		}

    		$revisions_query = new WP_Query();
    		$revisions       = $revisions_query->query( $query_args );
    		$offset          = isset( $query_args['offset'] ) ? (int) $query_args['offset'] : 0;
    		$page            = isset( $query_args['paged'] ) ? (int) $query_args['paged'] : 0;
    		$total_revisions = $revisions_query->found_posts;

    		if ( $total_revisions < 1 ) {
    			// Out-of-bounds, run the query without pagination/offset to get the total count.
    			unset( $query_args['paged'], $query_args['offset'] );

    			$count_query                          = new WP_Query();
    			$query_args['fields']                 = 'ids';
    			$query_args['posts_per_page']         = 1;
    			$query_args['update_post_meta_cache'] = false;
    			$query_args['update_post_term_cache'] = false;

    			$count_query->query( $query_args );

    			$total_revisions = $count_query->found_posts;
    		}

    		if ( $revisions_query->query_vars['posts_per_page'] > 0 ) {
    			$max_pages = (int) ceil( $total_revisions / (int) $revisions_query->query_vars['posts_per_page'] );
    		} else {
    			$max_pages = $total_revisions > 0 ? 1 : 0;
    		}
    		if ( $total_revisions > 0 ) {
    			if ( $offset >= $total_revisions ) {
    				return new WP_Error(
    					'rest_revision_invalid_offset_number',
    					__( 'The offset number requested is larger than or equal to the number of available revisions.' ),
    					array( 'status' => 400 )
    				);
    			} elseif ( ! $offset && $page > $max_pages ) {
    				return new WP_Error(
    					'rest_revision_invalid_page_number',
    					__( 'The page number requested is larger than the number of pages available.' ),
    					array( 'status' => 400 )
    				);
    			}
    		}
    	} else {
    		$revisions       = array();
    		$total_revisions = 0;
    		$max_pages       = 0;
    		$page            = (int) $request['page'];
    	}

    	if ( ! $is_head_request ) {
    		$response = array();

    		foreach ( $revisions as $revision ) {
    			$data       = $this->prepare_item_for_response( $revision, $request );
    			$response[] = $this->prepare_response_for_collection( $data );
    		}

    		$response = rest_ensure_response( $response );
    	} else {
    		$response = new WP_REST_Response( array() );
    	}

    	$response->header( 'X-WP-Total', (int) $total_revisions );
    	$response->header( 'X-WP-TotalPages', (int) $max_pages );

    	$request_params = $request->get_query_params();
    	$base_path      = rest_url( sprintf( '%s/%s/%d/%s', $this->namespace, $this->parent_base, $request['parent'], $this->rest_base ) );
    	$base           = add_query_arg( urlencode_deep( $request_params ), $base_path );

    	if ( $page > 1 ) {
    		$prev_page = $page - 1;

    		if ( $prev_page > $max_pages ) {
    			$prev_page = $max_pages;
    		}

    		$prev_link = add_query_arg( 'page', $prev_page, $base );
    		$response->link_header( 'prev', $prev_link );
    	}
    	if ( $max_pages > $page ) {
    		$next_page = $page + 1;
    		$next_link = add_query_arg( 'page', $next_page, $base );

    		$response->link_header( 'next', $next_link );
    	}

    	return $response;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php#L153)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php#L153-L285)

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#related)󠁿

| Uses | Description | 
| [WP_REST_Global_Styles_Revisions_Controller::get_decoded_global_styles_json()](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_decoded_global_styles_json/)`wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php` |

Returns decoded JSON from post content string, or a 404 if not found.

  | 
| [WP_REST_Global_Styles_Revisions_Controller::get_collection_params()](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_collection_params/)`wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php` |

Retrieves the query params for collections.

  | 
| [WP_REST_Global_Styles_Revisions_Controller::prepare_item_for_response()](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/prepare_item_for_response/)`wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php` |

Prepares the revision for the REST response.

  | 
| [urlencode_deep()](https://developer.wordpress.org/reference/functions/urlencode_deep/)`wp-includes/formatting.php` |

Navigates through an array, object, or scalar, and encodes the values to be used in a URL.

  | 
| [WP_Query::__construct()](https://developer.wordpress.org/reference/classes/wp_query/__construct/)`wp-includes/class-wp-query.php` |

Constructor.

  | 
| [wp_revisions_enabled()](https://developer.wordpress.org/reference/functions/wp_revisions_enabled/)`wp-includes/revision.php` |

Determines whether revisions are enabled for a given post.

  | 
| [rest_ensure_response()](https://developer.wordpress.org/reference/functions/rest_ensure_response/)`wp-includes/rest-api.php` |

Ensures a REST response is a response object (for consistency).

  | 
| [rest_url()](https://developer.wordpress.org/reference/functions/rest_url/)`wp-includes/rest-api.php` |

Retrieves the URL to a REST endpoint.

  | 
| [__()](https://developer.wordpress.org/reference/functions/__/)`wp-includes/l10n.php` |

Retrieves the translation of $text.

  | 
| [add_query_arg()](https://developer.wordpress.org/reference/functions/add_query_arg/)`wp-includes/functions.php` |

Retrieves a modified URL query string.

  | 
| [is_wp_error()](https://developer.wordpress.org/reference/functions/is_wp_error/)`wp-includes/load.php` |

Checks whether the given variable is a WordPress Error.

  | 
| [WP_Error::__construct()](https://developer.wordpress.org/reference/classes/wp_error/__construct/)`wp-includes/class-wp-error.php` |

Initializes the error.

  |

[Show 7 more](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#)

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_rest_global_styles_revisions_controller/get_items/?output_format=md#changelog)󠁿

| Version | Description | 
| [6.3.0](https://developer.wordpress.org/reference/since/6.3.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_rest_global_styles_revisions_controller%2Fget_items%2F)
before being able to contribute a note or feedback.