/** * 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' ) ), ); } } Pankaj Vaid – Page 6 – Chambers Of Vikramaditya

Pankaj Vaid

El sorbo irresistible y playuzu.ar, una experiencia de casino única

El sorbo irresistible y playuzu.ar, una experiencia de casino única La variedad de juegos que ofrece playuzu.ar: un universo de posibilidades Juegos de tragamonedas: un clásico reinventado Información crucial sobre la seguridad y las regulaciones de playuzu.ar Protocolos de seguridad y encriptación de datos Métodos de pago disponibles en playuzu.ar: comodidad y flexibilidad Opciones de […]

El sorbo irresistible y playuzu.ar, una experiencia de casino única Read More »

Buffalo Su Spillemaskine, Idrætsgren Xon bet app log ind sikken Sjov Recension

Buffalo Freedom spilleautomat tager dig inklusive online eventyr som det amerikanske vildmark. Denne spilleautomat har et klassisk arrangemen i Xon bet app log ind kraft af 5 hjul og 3 rækker, heri giver dig læg 243 måder at garnvinde på. Ma sjældne Golden Buffalos eksperthjælp dig inklusive at opgradere symboler og udløse Rampage Reels. Pr.

Buffalo Su Spillemaskine, Idrætsgren Xon bet app log ind sikken Sjov Recension Read More »

Testosterone Propionate 100 pour les Passionnés de Musculation

Le Testosterone Propionate 100 est un produit de pointe spécifiquement conçu pour les athlètes et les culturistes en quête d’amélioration de leurs performances. Ce composé dérivé de la testostérone est particulièrement apprécié pour sa capacité à amplifier la croissance musculaire, à réduire la graisse corporelle et à augmenter l’énergie. L’utilisation de cette formule vous permet

Testosterone Propionate 100 pour les Passionnés de Musculation Read More »

Comment les stéroïdes affectent le métabolisme du calcium

Le métabolisme du calcium est un processus essentiel pour le fonctionnement optimal de nombreux systèmes biologiques dans le corps humain. Ce minéral joue un rôle clé dans la santé des os, la contraction musculaire, et même dans la transmission nerveuse. Cependant, l’utilisation de stéroïdes, notamment les stéroïdes anabolisants, peut perturber ce métabolisme et engendrer divers

Comment les stéroïdes affectent le métabolisme du calcium Read More »

Oxymetholone pour un développement musculaire optimal

Découvrez l’Oxymetholone, le comprimé phare pour les passionnés de musculation et de performance sportive. Reconnu dans le monde du bodybuilding pour ses effets puissants, ce produit est un stéroïde anabolisant qui aide à la prise de masse musculaire rapide. Grâce à sa formulation spécifique, Oxymetholone favorise la rétention d’azote dans les muscles, ce qui permet

Oxymetholone pour un développement musculaire optimal Read More »

Največje spletne igralnice Avstralija pravi denar Denar: 5 najboljših igralniških podjetij s strokovnjaki Aussie Popolnoma novi Pokies, hitri dobički in Prenos aplikacije Roulettino večje spodbude

Blogi Prenos aplikacije Roulettino – Zakaj dejanski avstralski spletni poki z najvišjimi RTP-ji omejujejo izgube Največji spletni poki na avstralski celini – Izstopanje ima Primerjava: najboljših 5 izbir Spletni pokies australia dollars ten put upodabljajo tudi številne različice teh iger, ki se sprožijo naključno med igranjem. Preden izkusite spletne pokie Australia PayID, vam naša ekipa

Največje spletne igralnice Avstralija pravi denar Denar: 5 najboljših igralniških podjetij s strokovnjaki Aussie Popolnoma novi Pokies, hitri dobički in Prenos aplikacije Roulettino večje spodbude Read More »

Nutný záujem! Cloudflare

Blogy Flame a budete Roses Joker 2 All-Inside RTP, Limit Victory & Volatility Hrajte porty, jackpoty a oveľa viac Hra Okolo sveta 100% bezplatná demo videohra Hracie automaty vyšetrovanie predstavovať To, že má typickú najvyššiu volatilitu a maximálne vyhráte 120 100 mincí, ponúka nadšený pohlcujúci zážitok pre obdivovateľov aktivít, ako aj pre fanúšikov. Baseball Superstar

Nutný záujem! Cloudflare Read More »

Webové kasína Us 2026 Skúmané a hodnotené

Blogy Alive Broker Online hra Trvať dlhšie Preferované kasínové hry Dôveryhodné od hráčov z celého sveta Bezpečnosť a certifikácia Množstvo hier znamená, že vás nikdy neunaví možnosti, a tiež prítomnosť autorizovaného tvorcu ľubovoľných čísel (RNG) je skvelým dôkazom férového hazardu. Ak máte tiež záujem o online automaty, stolové videohry alebo inak špecializované online hry v

Webové kasína Us 2026 Skúmané a hodnotené Read More »

Emotional Vulnerability and the Donbet Casino Review Experience

Emotional Vulnerability and the Donbet Casino Review Experience Understanding Donbet Casino’s Game Selection The Psychology Behind Slot Machine Appeal Exploring Donbet Casino’s Bonus Structure Assessing Donbet Casino’s Security and Fairness Donbet Casino’s Customer Support and User Experience Beyond the Games: Considering Responsible Gambling at Donbet 🔥 Play ▶️ Emotional Vulnerability and the Donbet Casino Review

Emotional Vulnerability and the Donbet Casino Review Experience Read More »

Die Wirkung von Metformin Hydrochlorid und Peptiden im Körper

Metformin Hydrochlorid ist ein weit verbreitetes Medikament, das hauptsächlich zur Behandlung von Typ-2-Diabetes eingesetzt wird. Es wirkt, indem es die Insulinempfindlichkeit verbessert und die Glukoseproduktion in der Leber hemmt. Doch nicht nur der Umgang mit Blutzucker ist bemerkenswert; Metformin hat auch andere interessante Eigenschaften, die insbesondere im Bereich der Gewichtsreduktion und der Altersforschung Aufmerksamkeit erregen.

Die Wirkung von Metformin Hydrochlorid und Peptiden im Körper Read More »