/** * 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' ) ), ); } } Вавада Казахстан – регистрация 2025 – Chambers Of Vikramaditya

Вавада Казахстан – регистрация 2025

Вавада Казино – Официальный Сайт Vavada Casino (2025)

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

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

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

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

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

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

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

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

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

Преимущества и функции официального сайта Vavada Casino

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

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

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

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

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

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

Как зарегистрироваться и начать играть на официальном сайте Vavada Casino

Для начала играть на официальном сайте Vavada Casino, вам нужно зарегистрироваться. Это простой и быстрый процесс, который займет не более 5 минут.

Вам нужно перейти на официальный сайт Vavada Casino (https://f-class.org/ ) и кликнуть на кнопку “Зарегистрироваться”.

Затем, вам нужно ввести свои личные данные, включая имя, фамилию, дату рождения, адрес электронной почты и пароль.

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

После ввода данных, вам нужно подтвердить регистрацию, кликнув на кнопку “Зарегистрироваться”.

Как начать играть на официальном сайте Vavada Casino

После регистрации, вы можете начать играть на официальном сайте Vavada Casino.

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

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

Важно! Вам нужно играть ответственно и не превышать свой бюджет.

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

Вам не нужно использовать вавада зеркало, чтобы начать играть. Официальный сайт Vavada Casino – это safest и наиболее надежный способ играть.

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

Вам не нужно использовать вавада рабочее зеркало, чтобы начать играть. Официальный сайт Vavada Casino – это safest и наиболее надежный способ играть.

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

Вам не нужно использовать вавада зеркало, чтобы начать играть. Официальный сайт Vavada Casino – это safest и наиболее надежный способ играть.

Бонусы и акции на официальном сайте Vavada Casino

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

Кроме того, на официальном сайте Vavada Casino регулярно проводятся акции и промокоды, которые позволяют игрокам получать дополнительные бонусы и выигрыши. Акции и промокоды могут быть использованы для получения дополнительных выигрышей, а также для получения дополнительных преимуществ в игре.

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

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

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

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

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

Leave a Comment

Your email address will not be published. Required fields are marked *