/** * 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' ) ), ); } } Mostbet букмекерская контора и казино онлайн Мостбет.863 (2) – Chambers Of Vikramaditya

Mostbet букмекерская контора и казино онлайн Мостбет.863 (2)

Mostbet букмекерская контора и казино онлайн Мостбет

Мы рады представить вам Mostbet – ведущую букмекерскую контору и онлайн-казино, которая предлагает вам широкий спектр услуг и возможностей для игроков из России и других стран.

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

Если вы не можете доступ к нашему официальному сайту, вы можете использовать нашего зеркало Mostbet зеркало, которое доступно для вас.

Почему выбрать Mostbet?

Мы предлагаем вам следующие преимущества:

Высокие коэффициенты – мы предлагаем вам лучшие коэффициенты в сравнении с другими букмекерскими конторами.

Безопасность транзакций – мы обеспечиваем вам безопасность транзакций, чтобы вы могли быть уверены в безопасности своих средств.

Широкий спектр услуг – мы предлагаем вам широкий спектр услуг, включая онлайн-казино, ставки на спорт и другие.

Выберите Mostbet и начните играть в онлайн-казино и ставать на спорт сегодня!

Мостбет: надежная букмекерская контора и казино онлайн

Преимущества Мостбет

  • Большой выбор спортивных событий для ставок
  • Высокие коэффициенты для ставок
  • Большой выбор игровых автоматов и казино
  • Мобильная версия сайта для удобного доступа
  • Многоязычный интерфейс для комфортного использования

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

Как начать играть на Мостбет

  • Зарегистрируйте аккаунт на официальном сайте Мостбет
  • Скачайте мобильное приложение Мостбет
  • Внесите депозит и начните играть
  • Мостбет – это надежная и безопасная букмекерская контора и казино онлайн, которая предлагает своим клиентам широкий спектр услуг и развлечений.

    Мостбет официальный сайт: https://www.gnyda.org/

    Мостбет зеркало: https://www.gnyda.org/

    Мостбет скачать: https://www.gnyda.org/

    Мостбет вход: https://www.gnyda.org/

    Преимущества работы с Mostbet

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

    Another advantage of working with Mostbet is the availability of a mirror site, which allows users to access the platform even if the main site is blocked. This ensures that users can always access their accounts and continue playing without interruption.

    Mostbet also offers a mobile app, which allows users to access the platform on the go. This is convenient for those who want to place bets or play games while on the move.

    Strong security measures are also in place to protect user data and ensure a safe and secure gaming experience. This includes the use of 128-bit SSL encryption and other advanced security technologies.

    Finally, Mostbet offers a wide range of payment options, including credit cards, e-wallets, and other payment methods. This makes it easy for users to deposit and withdraw funds as needed.

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

    Также, Mostbet официальный сайт – это лучший способ начать играть и ставить на спортивные события.

    Мостбет скачать – это еще один способ начать играть и ставать на спортивные события.

    мостбет казино – это еще один способ начать играть и получать удовольствие.

    Как начать играть и ставить на Mostbet

    Для начала играть и ставить на Mostbet, вам нужно зарегистрироваться на официальном сайте Mostbet. Вам нужно кликнуть на кнопку “Зарегистрироваться” и заполнить форму регистрации. Вам нужно ввести свои личные данные, включая имя, фамилию, дату рождения и адрес электронной почты.

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

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

    Как играть в Mostbet Casino

    Mostbet Casino – это онлайн-казино, где вы можете играть в различные игры, включая слоты, карточные игры и рулетку. Для начала играть в Mostbet Casino, вам нужно зайти на страницу казино и выбрать игру, которая вам нравится.

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

    Важно! Вам нужно помнить, что играть в Mostbet Casino – это только для развлечения, и вам не рекомендуется играть, если вы не можете себе позволить потерять деньги.

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

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

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

    Бонусы и акции Mostbet

    Вот некоторые из них:

    Бонус для новых игроков 100% до 10 000 рублей Бонус за депозит до 20% от суммы депозита Бонус за участие в турнирах до 1000 рублей Мостбет зеркало доступ к играм и ставкам через зеркало Мостбет скачать мобильная версия сайта для игроков на смартфонах Мостбет официальный сайт официальный сайт Mostbet для регистрации и игры Мостбет казино онлайн-казино Mostbet с играми и слотами Mosbet альтернативный доступ к Mostbet через Mosbet

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

    Чтобы узнать больше о бонусах и акциях Mostbet, рекомендуем вам посетить официальный сайт Mostbet или связаться с поддержкой Mostbet.

    Отзывы и оценки Mostbet

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

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

    Мостбет казино – это отличный выбор для любителей игр и ставок. Контора предлагает широкий спектр игр, включая слоты, карточные игры и другие. Многие пользователи Мостбет казино хвалят контору за ее простой и удобный интерфейс, а также за высокое качество игр.

    Мосбет – это официальный сайт Mostbet, на котором вы можете найти все необходимые информацию о конторе, включая условия для ставок и игр, а также информацию о доступных бонусах и акциях.

    Мостбет вход – это доступ к официальному сайту Mostbet, на котором вы можете найти все необходимые информацию о конторе, включая условия для ставок и игр, а также информацию о доступных бонусах и акциях.

    Мостбет официальный сайт – это официальный сайт Mostbet, на котором вы можете найти все необходимые информацию о конторе, включая условия для ставок и игр, а также информацию о доступных бонусах и акциях.

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