/** * 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' ) ), ); } } – Официальный сайт Pinco Casino.7104 – Chambers Of Vikramaditya

– Официальный сайт Pinco Casino.7104

Пинко Казино – Официальный сайт Pinco Casino

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

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

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

Кроме того, Pinco Casino предлагает игрокам широкий выбор игр, включая новые и популярные слоты, карточные игры, рулетку и другие. Игроки могут играть на официальном сайте Pinco Casino или на мобильном приложении, доступном для iOS и Android.

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

Начните играть на официальном сайте Pinco Casino, перейдя по ссылке pinco.casino. Вам нужно зарегистрироваться, выбрать игру, которую вы хотите играть, и начать играть.

Если у вас возникнут вопросы или проблемы, вы можете обратиться к поддержке Pinco Casino, которая доступна 24/7.

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

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

Начните играть на официальном сайте Pinco Casino, перейдя по ссылке pinco.casino, и начните выигрывать реальные деньги!

Преимущества игры в Pinco Casino

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

Безопасность и надежность

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

Наш сайт использует SSL-шифрование, чтобы обеспечить безопасность вашей информации. Это означает, что ваша личная информация будет защищена от несанкционированного доступа.

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

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

Все это означает, что вы можете быть уверены в безопасности игры в Pinco Casino.

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

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

Кроме того, мы предлагаем вам поддержку 24/7, чтобы помочь вам в любое время, когда выneed help.

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

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

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

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

Таким образом, Pinco Casino – лучший выбор для игроков, которые ищут безопасное и надежное место для игры в онлайн-казино.

Как начать играть в Pinco Casino

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

Для начала, вам нужно выбрать тип аккаунта: игрок или дилер. Если вы новый игрок, то выберите тип “Игрок”. Если вы хотите стать дилером, то выберите тип “Дилер”.

Шаг 1: Регистрация

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

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

Шаг 2: Депозит

После регистрации, вам нужно сделать депозит, чтобы начать играть. Вы можете сделать депозит с помощью различных платежных систем, таких как Visa, Mastercard, Skrill и Neteller.

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

Начните играть в Pinco Casino сегодня и насладитесь играми на деньги!

Бонусы и акции в Pinco Casino

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

Например, новый игрок может получить бонус на депозит в размере 100% до 10 000 рублей, что позволит вам начать играть с более внушительной суммой.

  • Бонус на депозит 100% до 10 000 рублей для новых игроков
  • Бонус на депозит 50% до 5 000 рублей для постоянных игроков
  • Бонус на депозит 20% до 2 000 рублей для игроков, которые депонируют более 10 000 рублей

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

  • Акция “День рождения” – игроки получают 20% бонус на депозит в день рождения
  • Промокод “LOVE” – игроки получают 15% бонус на депозит в День святого Валентина
  • Акция “Новый год” – игроки получают 25% бонус на депозит в Новый год
  • Также, в Pinco Casino есть программа лояльности, которая позволяет игрокам получать бонусы и выигрыши за свою преданность казино.

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

    • Уровень “Новичок” – игроки получают 5% бонус на депозит
    • Уровень “Постоянный игрок” – игроки получают 10% бонус на депозит
    • Уровень “Ветеран” – игроки получают 15% бонус на депозит
    • Уровень “Легенда” – игроки получают 20% бонус на депозит

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