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

Post

Faszination pur Gewinne mit onlyspins im neuen Online Casino erleben!

Faszination pur: Gewinne mit onlyspins im neuen Online Casino erleben! Die Grundlagen von onlyspins: Was macht dieses Casino einzigartig? Bonusangebote und Promotionen bei onlyspins Die Spieleauswahl bei onlyspins: Von Slots bis Live-Casino Sicherheit und Seriosität bei onlyspins Zahlungsmethoden und Auszahlungen Der Kundenservice von onlyspins: Support rund um die Uhr Mobile Kompatibilität von onlyspins Faszination pur: […]

Faszination pur Gewinne mit onlyspins im neuen Online Casino erleben! Read More »

Faszination pur und Nervenkitzel garantiert Entdecke die Welt der Online-Spielcasinos und sichere di

Faszination pur und Nervenkitzel garantiert: Entdecke die Welt der Online-Spielcasinos und sichere dir unvergessliche Momente mit onlyspins. Die Vielfalt der Spiele im Online-Casino Sicherheit und Fairness im Online-Casino Die Bedeutung von Lizenzierung und Regulierung Sichere Zahlungsmethoden im Online-Casino Verantwortungsvolles Spielen und Spielsuchtprävention Bonusangebote und Promotionen im Online-Casino Mobile Casinos und die Zukunft des Online-Glücksspiels Wie

Faszination pur und Nervenkitzel garantiert Entdecke die Welt der Online-Spielcasinos und sichere di Read More »

Jedes Spiel ein Volltreffer Mit onlyspins erlebst du Spannung pur und sichere dir deine Chance auf r

Jedes Spiel ein Volltreffer: Mit onlyspins erlebst du Spannung pur und sichere dir deine Chance auf riesige Auszahlungen! Die Welt der Spielautomaten: Eine Einführung Tischspiele: Klassische Casino-Spiele online erleben Roulette: Die verschiedenen Varianten Boni und Promotionen in Online-Casinos Wichtige Bonusbedingungen Sichere Zahlungsmethoden in Online-Casinos Jedes Spiel ein Volltreffer: Mit onlyspins erlebst du Spannung pur und

Jedes Spiel ein Volltreffer Mit onlyspins erlebst du Spannung pur und sichere dir deine Chance auf r Read More »

Faszination pur Gewinne grenzenlos mit den besten Spins Casino Angeboten und erhöhe deine Chancen au

Faszination pur: Gewinne grenzenlos mit den besten Spins Casino Angeboten und erhöhe deine Chancen auf den großen Durchbruch. Was ist ein Spins Casino und wie unterscheidet es sich? Vorteile von Freispielen Die Auswahl an Spielen in Spins Casinos Sicherheit und Seriosität von Spins Casinos Faszination pur: Gewinne grenzenlos mit den besten Spins Casino Angeboten und

Faszination pur Gewinne grenzenlos mit den besten Spins Casino Angeboten und erhöhe deine Chancen au Read More »

Få Sugen På Stora Vinster – Sweet Bonanza App Download Ger Dig Direkt Tillgång Till Spelglädjen!

Få Sugen På Stora Vinster – Sweet Bonanza App Download Ger Dig Direkt Tillgång Till Spelglädjen! Vad är Sweet Bonanza och Varför Är Det Så Populärt? Hur Laddar Jag Ner och Installerar Sweet Bonanza Appen? Fördelarna med Att Spela Sweet Bonanza På En App Säkerhet och Licensiering – Vad Bör Jag Kontrollera? Tips och Strategier

Få Sugen På Stora Vinster – Sweet Bonanza App Download Ger Dig Direkt Tillgång Till Spelglädjen! Read More »

Fruchtbare Oogst Speel Sweet Bonanza gratis en ontdek een wereld vol snoepachtige overwinningen en e

Fruchtbare Oogst: Speel Sweet Bonanza gratis en ontdek een wereld vol snoepachtige overwinningen en eindeloos plezier. Wat maakt Sweet Bonanza zo populair? De Symbolen in Sweet Bonanza Bonusfuncties en Uitbetalingen Hoe speel je Sweet Bonanza? Sweet Bonanza Strategieën en Tips Waar kun je Sweet Bonanza spelen? Conclusie Fruchtbare Oogst: Speel Sweet Bonanza gratis en ontdek

Fruchtbare Oogst Speel Sweet Bonanza gratis en ontdek een wereld vol snoepachtige overwinningen en e Read More »

Dolce evasione virtuale esplora il mondo colorato e le opportunità di vittoria con Sweet Bonanza in

Dolce evasione virtuale: esplora il mondo colorato e le opportunità di vittoria con Sweet Bonanza in modalità demo, unesperienza di gioco avvincente e senza rischi. Cos’è Sweet Bonanza e Perché è Così Popolare? Strategie di Base per Giocare a Sweet Bonanza Il Round Bonus e i Moltiplicatori Come Sfruttare al Meglio la Modalità Demo Consigli

Dolce evasione virtuale esplora il mondo colorato e le opportunità di vittoria con Sweet Bonanza in Read More »

Adoce Sua Sorte Estratégias Vencedoras e a Emoção Irresistível de Sweet Bonanza.

Adoce Sua Sorte: Estratégias Vencedoras e a Emoção Irresistível de Sweet Bonanza. Entendendo a Mecânica do Sweet Bonanza Estratégias para Maximizar seus Ganhos O Poder das Rodadas Grátis e Multiplicadores Gerenciando sua Banca com Sabedoria Dicas Avançadas para Jogadores Experientes Adoce Sua Sorte: Estratégias Vencedoras e a Emoção Irresistível de Sweet Bonanza. O universo dos

Adoce Sua Sorte Estratégias Vencedoras e a Emoção Irresistível de Sweet Bonanza. Read More »

Elevate Your Play with Seamless Wins at 1win Casino & Sportsbook._2

Elevate Your Play with Seamless Wins at 1win Casino & Sportsbook. Understanding the 1win Platform: A Comprehensive Overview Casino Games: A World of Slots and More Exploring the Variety of Slot Games Live Dealer Games: The Authentic Casino Experience Sports Betting: Beyond the Casino Floor Navigating the Sports Betting Interface Understanding Betting Markets and Odds

Elevate Your Play with Seamless Wins at 1win Casino & Sportsbook._2 Read More »

Fordulj a szerencséhez a ggbet hu oldalon új dimenzióba léphetsz a játékban!

Fordulj a szerencséhez: a ggbet hu oldalon új dimenzióba léphetsz a játékban! A ggbet hu platform bemutatása A Regisztrációs Folyamat A Bónuszok és Promóciók Világa Sportfogadások a ggbet hu oldalon A Mobil Alkalmazás Előnyei A Ügyfélszolgálat Fontossága Felelős Szerencsejáték Fordulj a szerencséhez: a ggbet hu oldalon új dimenzióba léphetsz a játékban! A modern online szerencsejátékok

Fordulj a szerencséhez a ggbet hu oldalon új dimenzióba léphetsz a játékban! Read More »