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

Pankaj Vaid

Die 5 häufigsten Fehler bei der Fettverbrennung mit Steroiden

Die Fettverbrennung ist für viele Fitnessbegeisterte ein zentrales Ziel, insbesondere wenn sie Steroide verwenden, um ihre Fortschritte zu beschleunigen. Die richtige Nutzung von Anabolika kann bemerkenswerte Ergebnisse liefern, jedoch gibt es dabei einige häufige Fehler, die den Erfolg gefährden können. In diesem Artikel stellen wir Ihnen die fünf häufigsten Fehler vor, die beim Einsatz von […]

Die 5 häufigsten Fehler bei der Fettverbrennung mit Steroiden Read More »

Het Effect van Test C 250: Wat Je Moet Weten

Test C 250, oftewel Testosteron Cypionaat, is een populair anabole steroïde dat veel gebruikt wordt door bodybuilders en atleten om spiermassa en kracht te vergroten. In dit artikel bespreken we de effecten van Test C 250, hoe het werkt en wat je moet overwegen voordat je het gebruikt. https://drizystudio.com/het-effect-van-test-c-250-wat-je-moet-weten/ Wat is Test C 250? Test

Het Effect van Test C 250: Wat Je Moet Weten Read More »

S-23 10 mg från Magnus Pharmaceuticals: Hur man tar tabletter

S-23 10 mg, producerat av Magnus Pharmaceuticals, är ett populärt supplement inom bodybuilding och fitnesskretsar. Det är viktigt att förstå hur man korrekt tar dessa tabletter för att maximera deras effekter och minimera eventuella biverkningar. https://www.cqcinvestigations.co.uk/s-23-23-10-mg-magnus-pharmaceuticals-hur-man-tar-tabletter/ Dosering och användning När du använder S-23 10 mg är det viktigt att följa rekommenderad dosering för att uppnå

S-23 10 mg från Magnus Pharmaceuticals: Hur man tar tabletter Read More »

Oxandroplex 10 Xt: Potencia y Efectividad en el Culturismo

Tabla de Contenido Introducción ¿Qué es Oxandroplex 10 Xt? Beneficios para los Culturistas Conclusiones Introducción El culturismo es una disciplina que requiere dedicación y el uso de suplementos adecuados para maximizar el desarrollo muscular. Oxandroplex 10 Xt es uno de los productos más mencionados en la comunidad de culturistas debido a su capacidad para mejorar

Oxandroplex 10 Xt: Potencia y Efectividad en el Culturismo Read More »

Parhaat PayPal-kasinot netissä ihmisille vuonna 2026

Blogit Varhaisimpien blackjack-keinojen välttäminen Nykyiset uhkapelialan kurssit Varmista, että olet todellakin käynnistänyt bonuksen Kaikki kampanjat ovat tutkinto- ja kelpoisuusvaatimusten armoilla. 500 Flex Spinsiä myönnetään Discover Game -kokoelman omistajille. Kaikki tämä tarkoittaa, että kun löydät suosittelemani oikean rahapeliyrityksen, pääset kokemaan yhden parhaista nettikasinoista. Kiinnitän huomiota kaikkiin oikean rahan kasinoihin ja sinun tulee kiinnittää huomiota niiden etuihin,

Parhaat PayPal-kasinot netissä ihmisille vuonna 2026 Read More »

Les Formes Orales et l’Utilisation Limitée par les Athlètes de Haut Niveau

Les Défauts des Formats Oraux dans le Sport Dans le monde du sport de haut niveau, de nombreux athlètes choisissent des formes alternatives de produits pour optimiser leur performance. Les formats oraux, bien que populaires pour le grand public, sont souvent mis de côté par les athlètes confirmés. Cela s’explique par plusieurs facteurs clés qui

Les Formes Orales et l’Utilisation Limitée par les Athlètes de Haut Niveau Read More »

Όχι εναντίον Ίσως όχι: Ποια είναι η διαφορά;

Άρθρα Επιβεβαιώστε ότι το μπόνους είναι όντως ενεργό Χαρακτηριστικά Στρατηγικές για μια επιχείρηση τυχερών παιχνιδιών στο διαδίκτυο Κωδικός πρόσβασης προσφοράς Οι κωδικοί κουπονιών χωρίς κατάθεση συνήθως δίνουν λίγο δωρεάν δανεισμό (age.grams. $10–$50) διαφορετικά πολλά χρήματα μακριά από το 100% δωρεάν περιστρέφονται μόνο με την εγγραφή. Δημιουργήστε μια άμεση καταχώριση και επιλέξτε ένα εκπαιδευμένο πλήρες πακέτο.

Όχι εναντίον Ίσως όχι: Ποια είναι η διαφορά; Read More »

Κίνητρα Αποδοχής ΗΠΑ 2025 Προσφορές Καλύτερης Εγγραφής Τώρα στα διαδικτυακά καζίνο

Ιστολόγια Προστασία & Τραπεζικές Εργασίες Σύσταση Φίλου Απαιτούμενος κωδικός πρόσβασης VEGAS400 Βρες το Επιπλέον και θα Μπεις σε Αυτό Καλύτερη Σύσταση: Η ολοκαίνουργια έκδοση χωρίς κατάθεση είναι συχνά μειωμένη ή περιορισμένη, ωστόσο, σας επιτρέπει να δοκιμάσετε την ευκαιρία του online παιχνιδιού – εντελώς δωρεάν και πιθανότατα θα έχετε την ευκαιρία να κερδίσετε πραγματικά χρήματα πριν

Κίνητρα Αποδοχής ΗΠΑ 2025 Προσφορές Καλύτερης Εγγραφής Τώρα στα διαδικτυακά καζίνο Read More »

Testosteron Enantat Dosierung: So Planen Sie Richtig

Testosteron Enantat ist ein beliebtes anaboles Steroid, das vor allem von Bodybuildern und Sportlern genutzt wird, um Muskelmasse und Leistungsfähigkeit zu steigern. Die richtige Dosierung ist entscheidend, um die gewünschten Ergebnisse zu erzielen und Nebenwirkungen zu minimieren. Hier erfahren Sie mehr über die optimale Planung der Testosteron Enantat Dosierung. 1. Die richtige Dosierung bestimmen Die

Testosteron Enantat Dosierung: So Planen Sie Richtig Read More »

موانئ ولفيرين، تحقق منها على الإنترنت مجانًا أو مقابل ربح حقيقي

دعامات مراجعة موانئ ولفيرين أفضل شركات المقامرة الرائعة التي تلعب لعبة ولفيرين نوع من ولفيرين أحدث ألعاب سلوتس كازينو ولفيرين التي تشير إلى X تم فتح ميزة لعبة الفيديو الجديدة "آدمانتيوم" المجانية بالكامل، والمُمثلة برمز حقنة مختلف، بعد الحصول على ثلاثة رموز أو أكثر من هذه الرموز في أي مكان على البكرات. يُتيح الحصول على

موانئ ولفيرين، تحقق منها على الإنترنت مجانًا أو مقابل ربح حقيقي Read More »