/** * 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 3 – Chambers Of Vikramaditya

Pankaj Vaid

Der Somatropin Effekt: Alles, was Sie wissen müssen

Somatropin, auch als menschliches Wachstumshormon (HGH) bekannt, spielt eine entscheidende Rolle im menschlichen Körper. Es wird in der Hypophyse produziert und ist maßgeblich für das Wachstum, die Zellreparatur und den Stoffwechsel verantwortlich. Der Somatropin Effekt beschreibt die vielfältigen Auswirkungen, die dieses Hormon auf unterschiedliche Funktionen im Körper hat. Hier finden Sie alle notwendigen Informationen über […]

Der Somatropin Effekt: Alles, was Sie wissen müssen Read More »

Che gratowin come incassare Prendere Pagamenti Rapidi dai Casa da gioco Non-AAMS sopra Farantube

Content WildTokyo – Bravura Premium anche Appoggio Dati – gratowin come incassare Migliori lungometraggio da vedere contro HBO Max Maggio 2026 Premio sul fondo: puoi intensificare il tuo considerazione di artificio verso Betway Requisiti legali di nuovo aspetti di legge richiesti Questi wallet fungono da assorbente entro conto bancario ancora bisca sicuri non AAMS Farantube.

Che gratowin come incassare Prendere Pagamenti Rapidi dai Casa da gioco Non-AAMS sopra Farantube Read More »

Offizielles Slots echtes Geld Spielbank

Content Beste Live-Roulette-Casinos je deutsche Gamer Playtech Live Wird dies allemal, within Online-Casinos dahinter aufführen? Wichtigste Besondere eigenschaften auf den Ansicht Traktandum Live Roulette Casinos in Cluster Hohe Limits Wie Sie gerne hatten konnten, überwiegen nachfolgende Vorteile im Live Spielsaal im vergleich zu dieser örtlichen Kasino. Diese Technologie ist und bleibt auch via diesseitigen höchsten

Offizielles Slots echtes Geld Spielbank Read More »

Casino Mafia France application mobile et exprience sur smartphone.4764

Casino Mafia France – application mobile et expérience sur smartphone ▶️ JOUER Содержимое L’univers des jeux de hasard au sein de Casino Mafia France Les jeux de hasard à Casino Mafia France Jouer partout, partout avec l’application mobile de Casino Mafia France Vous cherchez un jeu de casino en ligne sécurisé et fiable ? Vous

Casino Mafia France application mobile et exprience sur smartphone.4764 Read More »

Competir regalado en los slots en internet sobre Igrosoft 2026

Content Animaciones intuitivas Características decisivo sobre Keks Winter: Símbolos comodín así­ como desmesurados ganancias Más CASINOS En línea Rompe los Cajas Fuertes con el fin de Desmesurados Premios Nuestro entretenimiento de descuento llegan a convertirse en focos de luces activa cuando se https://vogueplay.com/ar/baccarat-resena/ muestran 3 o mayormente símbolos de cuadra (representados por la tortuga) sobre

Competir regalado en los slots en internet sobre Igrosoft 2026 Read More »

Sárkánymozgató bemutató Játssz 100%-ban ingyenes pozíciójátékokat

Cikkek Choice Brands, RTP és a különbség A bónusz ajánlatok, amelyek több ütést biztosítanak az új tárcsáknak A nagy különbségű portok nagy izgalmi profilt biztosítanak Az ilyen típusú ablakok pontos betartása biztosítja, hogy a juttatások gyorsan valós dolláregyenleggé váljanak, feltéve, hogy a kaszinó új szabályait betartják. Rendszeresen ellenőrizze fiókja kezelőfelületét és tartalmát, hogy elkerülje a

Sárkánymozgató bemutató Játssz 100%-ban ingyenes pozíciójátékokat Read More »

Online Pokies 2026 670+ Ingyenes Pokies online játék! Töltési jellemzők

Adam Volz egy internetes fogadási szakember, aki cikkek összehasonlítására és írására specializálódott, hogy segítsen a szakembereknek megtalálni a számukra megfelelő kaszinót. Ahogy a neve is sugallja, a háromdimenziós nyerőgépek fantasztikus 3D grafikával rendelkeznek, így a pörgetés igazi élvezet. Az egyik kifizetés, amit a gyűjtött összeg hozzáadódik a pénzből származó tartozásokhoz.

Online Pokies 2026 670+ Ingyenes Pokies online játék! Töltési jellemzők Read More »

fifty Totally free Revolves No deposit, No Choice United kingdom Lucky Angler 120 free spins Offers Only!

Posts Finest Casinos Offering Totally free Twist Added bonus No deposit You can’t Withdraw Totally free Spin Payouts Immediately – You need to Wager Her or him Very first! Getting 60 100 percent free Spins Incentive? No deposit Totally free Spins in america Just how do wagering criteria benefit free spins bonuses? As to the

fifty Totally free Revolves No deposit, No Choice United kingdom Lucky Angler 120 free spins Offers Only! Read More »

Poznato Voće Reputacija Pompeii RoyalGame bonus kod danas video slot pravi novac Savjeti 2026 Miami Bar lokalni online casino Keller Mugshot Madness stanje izvrstan pravi prihod Williams

Objave Motiv I doživjet ćete izloženost hladnom voćnom položaju: RoyalGame bonus kod danas Ima i možda imate bonuse I da online kockarnice imaju Trendy Good svježe voće? Što ćete otkriti u ovom mišljenju o trendovskom voću Zapravo čak i danas, to je jedna od jedinih progresivnih luka koja koristi ovaj pristup, plus očito je jedna

Poznato Voće Reputacija Pompeii RoyalGame bonus kod danas video slot pravi novac Savjeti 2026 Miami Bar lokalni online casino Keller Mugshot Madness stanje izvrstan pravi prihod Williams Read More »

फेयर गो गैंबलिंग प्रतिष्ठान में 2025 में 100 प्रतिशत मुफ्त स्पिन।

ब्लॉग एक नंबर वन अभिवादन की भी जांच करें जो यह प्रदान करता है क्या रॉकेटप्ले के दौरान इसे खेलना फायदेमंद है? CoinCasino, Telegram पर उपलब्ध जुआ कंपनियों की बढ़ती संख्या में से एक है, जिसका मतलब है कि आप इस लोकप्रिय सार्वजनिक प्लेटफॉर्म के माध्यम से गेम खेल सकते हैं। आप Telegram ऐप के

फेयर गो गैंबलिंग प्रतिष्ठान में 2025 में 100 प्रतिशत मुफ्त स्पिन। Read More »