/** * 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 зеркало сайта букмекерской конторы 1вин.3822 (2) – Chambers Of Vikramaditya

1win зеркало сайта букмекерской конторы 1вин.3822 (2)

1win — зеркало сайта букмекерской конторы 1вин

Если вы ищете надежный партнер для ставок на спорт, то 1win – это отличный выбор. Это зеркало официального сайта букмекерской конторы 1вин, которое предлагает вам широкий спектр услуг и функций для комфортного игрового процесса.

1win – это современная платформа, которая позволяет пользователям из России и других стран мира делать ставки на спорт, играть в казино и другие игры, а также получать доступ к различным функциям и инструментам для анализа и прогнозирования результатов матчей.

Один из главных преимуществ 1win – это его доступность. Пользователи могут использовать платформу на любом устройстве, будь то компьютер, смартфон или планшет, и на любом операционном системе, включая Windows, macOS, iOS и Android.

Кроме того, 1win предлагает пользователям широкий спектр функций и инструментов для анализа и прогнозирования результатов матчей, включая линию ставок, статистику команд, прогнозы экспертов и многое другое.

Если вы ищете надежный партнер для ставок на спорт, то 1win – это отличный выбор. Платформа предлагает пользователям безопасный и комфортный игровой процесс, а также доступ к широкому спектру функций и инструментов для анализа и прогнозирования результатов матчей.

Также, 1win предлагает пользователям различные бонусы и акции, которые могут помочь им начать играть и получать прибыль.

В целом, 1win – это отличный выбор для тех, кто ищет надежный партнер для ставок на спорт и игры в казино.

Начните играть сейчас!

Помните, что 1win – это зеркало официального сайта, поэтому вы можете быть уверены в безопасности и надежности игрового процесса.

Преимущества использования зеркала 1win

Один из главных преимуществ использования зеркала 1win – это безопасность. Зеркало 1win – это надежный и безопасный способ получить доступ к функциям и услугам 1win, не рискуя своей безопасностью в интернете.

Преимущества использования зеркала 1win:

Безопасность: Зеркало 1win – это надежный и безопасный способ получить доступ к функциям и услугам 1win, не рискуя своей безопасностью в интернете.

Удобство: Зеркало 1win позволяет вам получать доступ к функциям и услугам 1win, не оставляя вас без доступа к официальному сайту.

Ускорение: Зеркало 1win – это быстрый и надежный способ получить доступ к функциям и услугам 1win, не ожидая ответа на запрос.

В целом, использование зеркала 1win – это идеальный выбор для тех, кто ищет безопасный и удобный способ получить доступ к функциям и услугам 1win.

Также, зеркало 1win – это отличный способ для тех, кто ищет способ ускорить процесс получения доступа к функциям и услугам 1win.

В любом случае, использование зеркала 1win – это лучший способ для вас, чтобы улучшить свои шансы на успех в ставках на спорт.

Как найти и использовать зеркало 1win

Если вы ищете способ 1вин официальный сайт найти и использовать зеркало 1win, вам нужно начать с поиска соответствующих ресурсов в интернете. Вам нужно найти надежные зеркала, которые обеспечат вам доступ к функциям 1win, включая 1win вход, 1win ставки и другие.

Вам нужно быть осторожным при поиске зеркал, потому что не все они являются надежными. Вам нужно проверять authenticity зеркал, чтобы убедиться, что они являются официальными ресурсами 1win.

Как найти надежное зеркало 1win

Вам нужно начать с поиска в поисковых системах, таких как Google, Yandex и других. Вам нужно вводить ключевые слова, такие как “1win зеркало”, “1 вин”, “1win вход” и другие, чтобы найти соответствующие результаты.

Вам нужно также проверять отзывы и рейтинги ресурсов, которые вы нашли, чтобы убедиться, что они являются надежными.

Важно! Вам нужно быть осторожным при поиске зеркал, потому что не все они являются надежными. Вам нужно проверять authenticity зеркал, чтобы убедиться, что они являются официальными ресурсами 1win.

Когда вы найдете надежное зеркало, вам нужно зарегистрироваться и начать использовать функции 1win, включая 1win вход, 1win ставки и другие.

Помните, что использование зеркала 1win может быть рискованным, и вам нужно быть осторожным при использовании.

Безопасность и надежность использования зеркала 1win

Когда вы решите использовать зеркало 1win, убедитесь, что вы используете только официальные зеркала, которые доступны на официальном сайте 1win. Ни в коем случае не используйте зеркала, которые предлагают вам скачать программное обеспечение или платить за доступ к функциональным возможностям.

Кроме того, мы рекомендуем вам использовать только надежные браузеры, такие как Google Chrome, Mozilla Firefox или Microsoft Edge, чтобы обеспечить безопасный доступ к функциональным возможностям 1win.

Важно помнить, что 1win – это официальный сайт букмекерской конторы, и использовать только официальные зеркала – это лучший способ обеспечить безопасность и надежность использования функциональных возможностей.

Если у вас возникнут вопросы или проблемы с использованием зеркала 1win, мы рекомендуем вам обратиться к нашим специалистам, которые готовы помочь вам в любое время.

Также, мы рекомендуем вам регулярно проверять официальный сайт 1win, чтобы убедиться, что вы используете только официальные зеркала и функциональные возможности, которые доступны на официальном сайте.

В целом, использование зеркала 1win – это безопасный и надежный способ доступа к функциональным возможностям букмекерской конторы 1win, и мы рекомендуем вам использовать только официальные зеркала и функциональные возможности, которые доступны на официальном сайте.