/** * 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' ) ), ); } } 1win – Los mejores bonos y juegos en el casino online 1win.1667 (2) – Chambers Of Vikramaditya

1win – Los mejores bonos y juegos en el casino online 1win.1667 (2)

1win – Los mejores bonos y juegos en el casino online 1win

¿Buscas un lugar donde puedas disfrutar de los mejores juegos de casino y obtener los mejores bonos? ¡Entonces 1win es tu destino! En este artículo, te presentaremos los mejores bonos y juegos de casino de 1win, para que puedas aprovechar al máximo tu experiencia de juego.

1win es uno de los casinos online más populares y respetados en el mercado, y por una buena razón. Ofrece una amplia variedad de juegos de casino, desde clásicos como el blackjack y el roulette, hasta juegos más modernos y emocionantes como el video poker y los slots.

Uno de los aspectos más atractivos de 1win es su política de bonos. Ofrece un paquete de bienvenida que incluye un bonus de 100% hasta 100€, lo que te permite jugar con más dinero y aumentar tus posibilidades de ganar. Además, ofrece un programa de recompensas que te permite ganar puntos y canjearlos por premios y bonos.

Otro aspecto que hace que 1win sea tan atractivo es su amplia variedad de opciones de pago. Acepta una amplia gama de métodos de pago, desde tarjetas de crédito y débito hasta sistemas de pago en línea como Neteller y Skrill. Esto te permite elegir el método de pago que mejor se adapte a tus necesidades y preferencias.

En resumen, 1win es el lugar perfecto para aquellos que buscan un casino online que ofrezca una amplia variedad de juegos, bonos generosos y opciones de pago convenientes. ¡Regístrate ahora y comienza a disfrutar de tus juegos favoritos!

¿Qué esperas? ¡Regístrate en 1win y comienza a disfrutar de tus juegos favoritos!

Recuerda que siempre es importante leer y entender los términos y condiciones de cualquier casino online antes de registrarte y jugar.

¡Descubre los secretos detrás de la popularidad de 1win!

La popularidad de 1win no es un secreto para nadie. Con millones de usuarios registrados en todo el mundo, es uno de los casinos en línea más populares y respetados. Pero, ¿qué los hace tan especiales? ¿Qué los hace diferentes de los demás? En este artículo, vamos a descubrir los secretos detrás de la popularidad de 1win.

La primera y más obvia razón es su amplia variedad de juegos. 1win ofrece más de 4.000 juegos de azar, incluyendo slots, ruleta, blackjack, video póker y mucho más. Esto significa que los jugadores pueden encontrar algo que les guste y disfrutar de una experiencia de juego única y emocionante.

La apuesta deportiva: un nuevo nivel de emoción

Además de sus juegos de azar, 1win también ofrece una amplia variedad de opciones de apuesta deportiva. Con más de 20 deportes y miles de eventos deportivos disponibles, los jugadores pueden apostar por sus equipos favoritos y disfrutar de una experiencia emocionante y emocionante.

Otra razón por la que 1win es tan popular es su política de apuestas. La plataforma ofrece una amplia variedad de opciones de apuesta, incluyendo apuestas individuales, apuestas múltiples y apuestas en vivo. Esto significa que los jugadores pueden personalizar su experiencia de juego y apostar de acuerdo a sus necesidades y preferencias.

Finalmente, 1win es conocido por su excelente servicio al cliente. La plataforma ofrece un equipo de atención al cliente disponible 24/7, lo que significa que los jugadores pueden obtener ayuda en cualquier momento y en cualquier lugar. Esto es especialmente importante para los jugadores que necesitan ayuda con sus cuentas o tienen preguntas sobre los juegos y las apuestas.

En resumen, la popularidad de 1win se debe a su amplia variedad de juegos, su política de apuestas y su excelente servicio al cliente. Si estás buscando un casino en línea que te ofrezca una experiencia de juego emocionante y emocionante, 1win es la mejor opción para ti.

¡Aprovecha los mejores bonos y promociones en 1win!

¿Buscas la mejor experiencia de juego en línea? ¡Entonces 1win es tu destino! Con una amplia variedad de juegos de casino y apuestas deportivas, 1win es el lugar perfecto para disfrutar de la diversión y la emoción.

¿Y qué hay 1 win de los bonos y promociones? ¡Eso es donde 1win realmente brilla! Con ofertas exclusivas y descuentos para nuevos y veteranos jugadores, 1win te da la oportunidad de aprovechar al máximo tu experiencia de juego.

¡Descubre los mejores bonos y promociones de 1win!

¡No te pierdas la oportunidad de obtener un 100% de bonus en tu primera deposito en 1win casino! Con un monto mínimo de deposito de 20€, puedes obtener un bonus de hasta 500€ para jugar en nuestros juegos de casino.

¡Y no te olvides de aprovechar nuestras promociones especiales! 1win ofrece descuentos y ofertas exclusivas para nuevos y veteranos jugadores, para que puedas disfrutar al máximo de tu experiencia de juego.

¡No esperes más! Regístrate ahora en 1win y comienza a disfrutar de las mejores experiencias de juego en línea!

¡Y recuerda que 1win es el lugar perfecto para disfrutar de la diversión y la emoción! Con nuestra amplia variedad de juegos de casino y apuestas deportivas, 1win es el lugar donde puedes encontrar lo que estás buscando.

¡No te pierdas la oportunidad de aprovechar los mejores bonos y promociones de 1win! Regístrate ahora y comienza a disfrutar de la mejor experiencia de juego en línea!

¡Explora el amplio catálogo de juegos en 1win!

¡Descubre el mundo de juegos en 1win! Con más de 1.000 títulos a tu disposición, podrás encontrar algo que se adapte a tus gustos y preferencias. ¿Qué tipo de juego te apasiona? ¿Eres un apasionado de la ruleta, el blackjack o los slots? ¿O prefieres los juegos de mesa, como el poker o el baccarat? En 1win, encontrarás una amplia variedad de opciones para disfrutar y divertirte.

En 1win, puedes jugar a juegos de azar, como el ruleta, el blackjack, el baccarat, el poker, los slots y muchos más. ¡Y no te preocupes si no sabes cómo jugar! En 1win, puedes aprender y mejorar tus habilidades en juegos de azar, gracias a nuestra amplia gama de tutoriales y consejos.

¿Quieres apostar en deportes? En 1win, puedes hacerlo con facilidad. Nuestro sitio web de apuestas deportivas te permite seguir en vivo los partidos y eventos deportivos, y apostar en tiempo real. ¡Y no te preocupes si no sabes cómo apostar! En 1win, puedes aprender y mejorar tus habilidades en apuestas deportivas, gracias a nuestra amplia gama de tutoriales y consejos.

En 1win, también puedes jugar a juegos de casino en línea, como el ruleta, el blackjack, el baccarat, el poker, los slots y muchos más. ¡Y no te preocupes si no sabes cómo jugar! En 1win, puedes aprender y mejorar tus habilidades en juegos de casino, gracias a nuestra amplia gama de tutoriales y consejos.

¡No te pierdas la oportunidad de disfrutar de la diversión y la emoción que ofrecen los juegos en 1win! ¡Regístrate ahora y comienza a jugar!