/** * REST API: WP_REST_Post_Types_Controller class * * @package WordPress * @subpackage REST_API * @since 4.7.0 */ /** * Core class to access post types via the REST API. * * @since 4.7.0 * * @see WP_REST_Controller */ class WP_REST_Post_Types_Controller extends WP_REST_Controller { /** * Constructor. * * @since 4.7.0 */ public function __construct() { $this->namespace = 'wp/v2'; $this->rest_base = 'types'; } /** * Registers the routes for post types. * * @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(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'type' => array( 'description' => __( 'An alphanumeric identifier for the post type.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => '__return_true', 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read types. * * @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, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all public post types. * * @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_items( $request ) { if ( $request->is_method( 'HEAD' ) ) { // Return early as this handler doesn't add any response headers. return new WP_REST_Response( array() ); } $data = array(); $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( 'edit' === $request['context'] && ! current_user_can( $type->cap->edit_posts ) ) { continue; } $post_type = $this->prepare_item_for_response( $type, $request ); $data[ $type->name ] = $this->prepare_response_for_collection( $post_type ); } return rest_ensure_response( $data ); } /** * Retrieves a specific post type. * * @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 ) { $obj = get_post_type_object( $request['type'] ); if ( empty( $obj ) ) { return new WP_Error( 'rest_type_invalid', __( 'Invalid post type.' ), array( 'status' => 404 ) ); } if ( empty( $obj->show_in_rest ) ) { return new WP_Error( 'rest_cannot_read_type', __( 'Cannot view post type.' ), array( 'status' => rest_authorization_required_code() ) ); } if ( 'edit' === $request['context'] && ! current_user_can( $obj->cap->edit_posts ) ) { return new WP_Error( 'rest_forbidden_context', __( 'Sorry, you are not allowed to edit posts in this post type.' ), array( 'status' => rest_authorization_required_code() ) ); } $data = $this->prepare_item_for_response( $obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a post type object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$post_type` to `$item` to match parent class for PHP 8 named parameter support. * * @param WP_Post_Type $item Post type object. * @param WP_REST_Request $request Full details about the request. * @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. $post_type = $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-post-types-controller.php */ return apply_filters( 'rest_prepare_post_type', new WP_REST_Response( array() ), $post_type, $request ); } $taxonomies = wp_list_filter( get_object_taxonomies( $post_type->name, 'objects' ), array( 'show_in_rest' => true ) ); $taxonomies = wp_list_pluck( $taxonomies, 'name' ); $base = ! empty( $post_type->rest_base ) ? $post_type->rest_base : $post_type->name; $namespace = ! empty( $post_type->rest_namespace ) ? $post_type->rest_namespace : 'wp/v2'; $supports = get_all_post_type_supports( $post_type->name ); $fields = $this->get_fields_for_response( $request ); $data = array(); if ( rest_is_field_included( 'capabilities', $fields ) ) { $data['capabilities'] = $post_type->cap; } if ( rest_is_field_included( 'description', $fields ) ) { $data['description'] = $post_type->description; } if ( rest_is_field_included( 'hierarchical', $fields ) ) { $data['hierarchical'] = $post_type->hierarchical; } if ( rest_is_field_included( 'has_archive', $fields ) ) { $data['has_archive'] = $post_type->has_archive; } if ( rest_is_field_included( 'visibility', $fields ) ) { $data['visibility'] = array( 'show_in_nav_menus' => (bool) $post_type->show_in_nav_menus, 'show_ui' => (bool) $post_type->show_ui, ); } if ( rest_is_field_included( 'viewable', $fields ) ) { $data['viewable'] = is_post_type_viewable( $post_type ); } if ( rest_is_field_included( 'labels', $fields ) ) { $data['labels'] = $post_type->labels; } if ( rest_is_field_included( 'name', $fields ) ) { $data['name'] = $post_type->label; } if ( rest_is_field_included( 'slug', $fields ) ) { $data['slug'] = $post_type->name; } if ( rest_is_field_included( 'icon', $fields ) ) { $data['icon'] = $post_type->menu_icon; } if ( rest_is_field_included( 'supports', $fields ) ) { $data['supports'] = $supports; } if ( rest_is_field_included( 'taxonomies', $fields ) ) { $data['taxonomies'] = array_values( $taxonomies ); } if ( rest_is_field_included( 'rest_base', $fields ) ) { $data['rest_base'] = $base; } if ( rest_is_field_included( 'rest_namespace', $fields ) ) { $data['rest_namespace'] = $namespace; } if ( rest_is_field_included( 'template', $fields ) ) { $data['template'] = $post_type->template ?? array(); } if ( rest_is_field_included( 'template_lock', $fields ) ) { $data['template_lock'] = ! empty( $post_type->template_lock ) ? $post_type->template_lock : false; } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $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( $post_type ) ); } /** * Filters a post type returned from the REST API. * * Allows modification of the post type data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param WP_Post_Type $post_type The original post type object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_post_type', $response, $post_type, $request ); } /** * Prepares links for the request. * * @since 6.1.0 * * @param WP_Post_Type $post_type The post type. * @return array Links for the given post type. */ protected function prepare_links( $post_type ) { return array( 'collection' => array( 'href' => rest_url( sprintf( '%s/%s', $this->namespace, $this->rest_base ) ), ), 'https://api.w.org/items' => array( 'href' => rest_url( rest_get_route_for_post_type_items( $post_type->name ) ), ), ); } /** * Retrieves the post type's schema, conforming to JSON Schema. * * @since 4.7.0 * @since 4.8.0 The `supports` property was added. * @since 5.9.0 The `visibility` and `rest_namespace` properties were added. * @since 6.1.0 The `icon` property was added. * * @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' => 'type', 'type' => 'object', 'properties' => array( 'capabilities' => array( 'description' => __( 'All capabilities used by the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'description' => array( 'description' => __( 'A human-readable description of the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'hierarchical' => array( 'description' => __( 'Whether or not the post type should have children.' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'viewable' => array( 'description' => __( 'Whether or not the post type can be viewed.' ), 'type' => 'boolean', 'context' => array( 'edit' ), 'readonly' => true, ), 'labels' => array( 'description' => __( 'Human-readable labels for the post type for various contexts.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'name' => array( 'description' => __( 'The title for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'slug' => array( 'description' => __( 'An alphanumeric identifier for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'supports' => array( 'description' => __( 'All features, supported by the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, ), 'has_archive' => array( 'description' => __( 'If the value is a string, the value will be used as the archive slug. If the value is false the post type has no archive.' ), 'type' => array( 'string', 'boolean' ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'taxonomies' => array( 'description' => __( 'Taxonomies associated with post type.' ), 'type' => 'array', 'items' => array( 'type' => 'string', ), 'context' => array( 'view', 'edit' ), 'readonly' => true, ), 'rest_base' => array( 'description' => __( 'REST base route for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'rest_namespace' => array( 'description' => __( 'REST route\'s namespace for the post type.' ), 'type' => 'string', 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'visibility' => array( 'description' => __( 'The visibility settings for the post type.' ), 'type' => 'object', 'context' => array( 'edit' ), 'readonly' => true, 'properties' => array( 'show_ui' => array( 'description' => __( 'Whether to generate a default UI for managing this post type.' ), 'type' => 'boolean', ), 'show_in_nav_menus' => array( 'description' => __( 'Whether to make the post type available for selection in navigation menus.' ), 'type' => 'boolean', ), ), ), 'icon' => array( 'description' => __( 'The icon for the post type.' ), 'type' => array( 'string', 'null' ), 'context' => array( 'view', 'edit', 'embed' ), 'readonly' => true, ), 'template' => array( 'type' => array( 'array' ), 'description' => __( 'The block template associated with the post type.' ), 'readonly' => true, 'context' => array( 'view', 'edit', 'embed' ), ), 'template_lock' => array( 'type' => array( 'string', 'boolean' ), 'enum' => array( 'all', 'insert', 'contentOnly', false ), 'description' => __( 'The template_lock associated with the post type, or false if none.' ), 'readonly' => true, 'context' => array( 'view', 'edit', 'embed' ), ), ), ); $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() { return array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ); } } Post – Page 8 – Chambers Of Vikramaditya

Post

Poczuj dreszcz emocji i wkrocz do świata niezapomnianych wrażeń z Mostbet Casino – Twoja brama do pa

Poczuj dreszcz emocji i wkrocz do świata niezapomnianych wrażeń z Mostbet Casino – Twoja brama do pasjonującej rozrywki i potencjalnych wygranych. Bogata oferta gier kasynowych w Mostbet pl Sloty: Królestwo tematycznych przygód Gry stołowe: Klasyka w nowoczesnym wydaniu Nowoczesne metody płatności w Mostbet pl Wpłaty i wypłaty: Szybkość i bezpieczeństwo Bezpieczeństwo transakcji finansowych Obsługa klienta […]

Poczuj dreszcz emocji i wkrocz do świata niezapomnianych wrażeń z Mostbet Casino – Twoja brama do pa Read More »

Zdobądź ekskluzywne korzyści nv casino promo code otworzy drzwi do świata emocji i wysokich wygranyc

Zdobądź ekskluzywne korzyści: nv casino promo code otworzy drzwi do świata emocji i wysokich wygranych w Twoim zasięgu. Zrozumienie Kodów Promocyjnych w Kasynach Online Rodzaje Bonusów Oferowanych z Kodami Promocyjnymi Gdzie Szukać Aktualnych Kodów Promocyjnych Strategie Efektywnego Wykorzystania Kodów Promocyjnych Zarządzanie Budżetem podczas Korzystania z Bonusów Podsumowanie: Maksymalizacja Korzyści z nv casino promo code Zdobądź

Zdobądź ekskluzywne korzyści nv casino promo code otworzy drzwi do świata emocji i wysokich wygranyc Read More »

Légy te a szerencse kovácsa a pörgő hotslots világában és nyerd meg a főnyereményt!

Légy te a szerencse kovácsa a pörgő hotslots világában és nyerd meg a főnyereményt! A Hotslots Játékok Fajái és Népszerűsége A Kaszinók Szerepe a Hotslots Élményében A Felelősségteljes Játék Fontossága a Hotslots Világában Hogyan Válasszunk Megbízható Hotslots Kaszinót? Légy te a szerencse kovácsa a pörgő hotslots világában és nyerd meg a főnyereményt! A modern kaszinóvilág

Légy te a szerencse kovácsa a pörgő hotslots világában és nyerd meg a főnyereményt! Read More »

Zdobądź przewagę w świecie rozrywki mostbet oferuje emocje, zwycięstwa i niezapomniane wrażenia w ka

Zdobądź przewagę w świecie rozrywki: mostbet oferuje emocje, zwycięstwa i niezapomniane wrażenia w każdym zakładzie! Zrozumienie podstaw: Czym jest mostbet? Rejestracja i Bezpieczeństwo: Jak zacząć korzystać z mostbet? Wpłaty i Wypłaty: Metody płatności dostępne na mostbet Bonusy i Promocje: Jak zwiększyć swoje szanse na wygraną na mostbet? Zakłady Sportowe na Mostbet: Szeroki zakres dyscyplin i

Zdobądź przewagę w świecie rozrywki mostbet oferuje emocje, zwycięstwa i niezapomniane wrażenia w ka Read More »

Zdobądź przewagę w świecie rozrywki online dzięki mostbet pl – Twojemu kluczowi do emocjonujących wy

Zdobądź przewagę w świecie rozrywki online dzięki mostbet pl – Twojemu kluczowi do emocjonujących wyzwań i satysfakcjonujących zwycięstw. Szeroki wybór dyscyplin sportowych i wydarzeń Kasyno online – świat wirtualnych emocji Bonusy i promocje dla nowych i stałych graczy Mobilna aplikacja – gra w dowolnym miejscu i czasie Metody płatności i bezpieczeństwo transakcji Obsługa klienta i

Zdobądź przewagę w świecie rozrywki online dzięki mostbet pl – Twojemu kluczowi do emocjonujących wy Read More »

Golden Opportunities Elevate Your Play with Yukon Gold Casino and Experience Premier Online Entertai

Golden Opportunities: Elevate Your Play with Yukon Gold Casino and Experience Premier Online Entertainment. Understanding the Game Selection at Yukon Gold Casino Navigating the Platform and User Experience Mobile Compatibility and Accessibility Customer Support Options Security and Fair Play Measures Banking Options and Withdrawal Processes Understanding Bonus Offers and Promotions Loyalty Programs and VIP Benefits

Golden Opportunities Elevate Your Play with Yukon Gold Casino and Experience Premier Online Entertai Read More »

Свобода азарта играйте в любимые слоты с актуальным азино 777 зеркало и выигрывайте прямо сейчас!

Свобода азарта: играйте в любимые слоты с актуальным азино 777 зеркало и выигрывайте прямо сейчас! Что такое азино 777 зеркало и зачем оно нужно? Как найти актуальное азино 777 зеркало? Критерии выбора надежного зеркала Способы обхода блокировок без использования зеркал Процесс регистрации и входа на азино 777 зеркало Пополнение и вывод средств со счета на

Свобода азарта играйте в любимые слоты с актуальным азино 777 зеркало и выигрывайте прямо сейчас! Read More »

Élvezd a pörgést és a nyereményeket – a hotslots regisztrációval most még nagyobb izgalmak és bónusz

Élvezd a pörgést és a nyereményeket – a hotslots regisztrációval most még nagyobb izgalmak és bónuszok várnak a játékosokra! A regisztráció folyamata és a személyes adatok védelme A játékválaszték sokszínűsége és a nyeremények esélye A bónuszok és promóciók világa A mobilplatform kényelme és a hozzáférhetőség A felelősségteljes játékgyakorlat és a tudatosság fontossága Élvezd a pörgést

Élvezd a pörgést és a nyereményeket – a hotslots regisztrációval most még nagyobb izgalmak és bónusz Read More »

Žhavé automaty a kuřecí dobrodružství čekají s Chicken Road casino a nejlepšími českými kasiny.

Žhavé automaty a kuřecí dobrodružství čekají s Chicken Road casino a nejlepšími českými kasiny. Co je Chicken Road Casino? Jak Hrát Chicken Road Casino Strategie pro Hraní Důležité Tipy Kde Hrát Chicken Road Casino v České Republice? Závěrem Žhavé automaty a kuřecí dobrodružství čekají s Chicken Road casino a nejlepšími českými kasiny. Svět online kasin

Žhavé automaty a kuřecí dobrodružství čekají s Chicken Road casino a nejlepšími českými kasiny. Read More »

Zábavná sázka na kuřecí cestu vám může přinést až 500násobek vkladu.

Zábavná sázka na kuřecí cestu vám může přinést až 500násobek vkladu. Co je to “Chicken Road” a jak funguje? Technické aspekty a generátor náhodných čísel Strategie a tipy pro hru “Chicken Road” Psychologie hazardu a zodpovědné hraní Výběr online casina pro hru “Chicken Road” Bezpečnost a ochrana osobních údajů v online casinech Budoucnost hry “Chicken

Zábavná sázka na kuřecí cestu vám může přinést až 500násobek vkladu. Read More »