/** * 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' ) ), ); } } Jetton Games онлайн казино мобильная версия и игра с телефона.1504 – Chambers Of Vikramaditya

Jetton Games онлайн казино мобильная версия и игра с телефона.1504

Jetton Games онлайн казино – мобильная версия и игра с телефона

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

Мобильная версия Jetton Games доступна для скачивания в App Store и Google Play, что означает, что вы можете играть в любое время и в любом месте. Интерфейс приложения простой и удобный, что позволяет игрокам легко найти игру, которая им понравится.

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

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

Если вы ищете онлайн-казино, которое предлагает мобильную версию и безопасную игру, то Jetton Games – это отличный выбор. Скачайте приложение и начните играть сегодня!

Обратите внимание, что минимальный возраст для игроков в Jetton Games – 18 лет. Если вы не достигли этого возраста, то вам не рекомендуется играть в онлайн-казино.

Jetton Games – это отличный выбор для тех, кто ищет онлайн-казино, которое предлагает мобильную версию и безопасную игру. Скачайте приложение и начните играть сегодня!

Jetton Games Онлайн Казино: Мобильная Версия и Игра с Телефона

Мобильная версия Jetton Games доступна для скачивания в App Store и Google Play, что делает ее доступной для пользователей с любыми типами смартфонов и планшетов.

Преимущества мобильной версии

  • Удобство: играть можно в любом месте и в любое время
  • Простота: интерфейс мобильной версии прост и легко понять
  • Быстрый доступ: играть можно сразу после скачивания приложения

Мобильная версия Jetton Games также предлагает несколько преимуществ, которые делают игру на телефоне более комфортной:

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

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

Установка и Запуск Мобильной Версии Jetton Games

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

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

Установка и Запуск на Android

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

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

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

Обратите внимание! Мобильная версия Jetton Games доступна для устройств с операционными системами Android и iOS. Если вы используете другую операционную систему, вам может не быть доступна мобильная версия игры.

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

Основные функции и возможности мобильной версии Jetton Games онлайн казино

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

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

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

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

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

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

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

Правила и Условия Игры с Телефона

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

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

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

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

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