/** * 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' ) ), ); } } MexVIP casino gua completa del casino online y sus juegos.1362 – Chambers Of Vikramaditya

MexVIP casino gua completa del casino online y sus juegos.1362

MexVIP casino – guía completa del casino online y sus juegos

¿Buscas un lugar donde puedas disfrutar de juegos de azar de alta calidad y seguridad? Entonces, ¡MexVIP Casino es tu destino! En este artículo, te brindaremos una guía completa sobre este casino online y sus juegos, para que puedas aprovechar al máximo tu experiencia.

¿Por qué elegir MexVIP Casino? Porque es un lugar donde puedes encontrar una amplia variedad de juegos de azar, desde clásicos como el blackjack y el ruleta, hasta juegos más modernos y emocionantes como el video poker y los slots. Además, cuenta con una plataforma segura y fácil de usar, lo que te permite disfrutar de tus juegos favoritos sin preocuparte por la seguridad.

¿Qué juegos mexvip juego es confiable ofrece MexVIP Casino? En este casino online, puedes encontrar una amplia variedad de juegos, incluyendo:

Slots: desde clásicos como el Book of Ra y el Starburst, hasta juegos más modernos y emocionantes como el Gonzo’s Quest y el Jackpot 6000.

Blackjack: con diferentes variantes, como el blackjack clásico, el blackjack europeo y el blackjack americano.

Roulette: con diferentes variantes, como la ruleta francesa, la ruleta americana y la ruleta europea.

Video Poker: con diferentes variantes, como el jacks or better, el deuces wild y el all american.

¿Cómo funciona MexVIP Casino? Para empezar, solo necesitas registrarte en el casino y crear una cuenta. Luego, puedes depositar fondos en tu cuenta y empezar a jugar. El casino ofrece una amplia variedad de métodos de pago, incluyendo tarjetas de crédito, transferencias electrónicas y depósitos en efectivo.

¿Qué beneficios ofrece MexVIP Casino? Algunos de los beneficios que ofrece este casino online incluyen:

Seguridad: la plataforma es segura y protegida por SSL, lo que te permite disfrutar de tus juegos favoritos sin preocuparte por la seguridad.

Amplia variedad de juegos: puedes encontrar una amplia variedad de juegos de azar, desde clásicos hasta juegos más modernos y emocionantes.

Bonificaciones y promociones: el casino ofrece una amplia variedad de bonificaciones y promociones, como depósitos gratuitos y torneos, para que puedas disfrutar de tus juegos favoritos.

¿Qué esperas? ¡Regístrate ahora en MexVIP Casino y comienza a disfrutar de tus juegos favoritos!

MexVIP Casino: Guía Completa del Casino Online y sus Juegos

¿Qué es MexVIP Casino? Es un sitio web de juego en línea que ofrece una amplia variedad de juegos de azar y apuestas deportivas. En esta guía, te proporcionaremos una visión general de la plataforma y sus características más destacadas.

La plataforma de MexVIP Casino es fácil de usar y navegar, con una interfaz de usuario intuitiva que te permite encontrar tus juegos favoritos en segundos. La mayoría de los juegos están disponibles en modalidad de demo, lo que te permite probarlos antes de apostar dinero real.

Tipos de Juegos

MexVIP Casino ofrece una amplia variedad de juegos, incluyendo:

– Slots: juegos de ruleta, tragaperras y otros juegos de azar.

– Juegos de mesa: blackjack, roulette, baccarat y otros juegos de mesa.

– Juegos de video: juegos de video como video poker y keno.

– Apuestas deportivas: apuestas en deportes como fútbol, baloncesto y otros.

La plataforma también ofrece una sección de “Juegos del Mes”, que te permite probar nuevos juegos y ganar premios.

¿Cómo funciona la plataforma? La plataforma de MexVIP Casino utiliza un sistema de depósito y retirada seguro y rápido, que te permite depositar y retirar fondos en minutos. La plataforma también ofrece una variedad de métodos de pago, incluyendo tarjetas de crédito, transferencias electrónicas y otros.

¿Qué beneficios ofrece MexVIP Casino? La plataforma ofrece una serie de beneficios, incluyendo:

– Bonos de bienvenida: bonos de bienvenida para nuevos jugadores.

– Promociones especiales: promociones especiales para jugadores regulares.

– Soporte al cliente: soporte al cliente disponible 24/7 para ayudarte con cualquier problema o pregunta.

En resumen, MexVIP Casino es una plataforma de juego en línea que ofrece una amplia variedad de juegos y beneficios para jugadores. Si estás buscando un lugar para jugar y divertirte, MexVIP Casino es una excelente opción.

¡Comienza a jugar hoy mismo y descubre por qué MexVIP Casino es el lugar ideal para tus necesidades de juego!

¿Qué es MexVIP Casino?

La respuesta es simple: MexVIP Casino es un casino online de confianza que ofrece una amplia variedad de juegos de azar y apuestas deportivas. Con sede en México, MexVIP Casino se ha establecido como uno de los principales operadores de casinos en línea en el país.

La misión de MexVIP Casino es brindar a sus jugadores una experiencia de juego segura, divertida y emocionante. Para lograr esto, el casino ha implementado medidas de seguridad de alta tecnología para proteger la privacidad y seguridad de sus usuarios. Además, ofrece una amplia gama de opciones de pago y retirada para facilitar las transacciones.

Características clave de MexVIP Casino

Algunas de las características clave de MexVIP Casino incluyen:

– Una amplia variedad de juegos de azar, incluyendo tragaperras, ruleta, blackjack y más.

– Apuestas deportivas en vivo y en línea.

– Una amplia gama de opciones de pago y retirada, incluyendo tarjetas de crédito, depósitos electrónicos y transferencias bancarias.

– Un equipo de atención al cliente disponible 24/7 para ayudar con cualquier pregunta o problema.

En resumen, MexVIP Casino es un casino online de confianza que ofrece una amplia variedad de opciones de juego y apuestas deportivas, junto con una amplia gama de opciones de pago y retirada y un equipo de atención al cliente disponible 24/7.