/** * 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' ) ), ); } } Казино – Официальный сайт Pin Up Casino Входи и играй.3136 – Chambers Of Vikramaditya

Казино – Официальный сайт Pin Up Casino Входи и играй.3136

Пин Ап Казино – Официальный сайт Pin Up Casino | Входи и играй

Если вы ищете официальный сайт pin up Казино, то вы на правом пути. В этом руководстве мы рассмотрим, как зарегистрироваться и начать играть на официальном сайте Pin Up Казино.

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

Для начала играть на официальном сайте Pin Up Казино вам нужно зарегистрироваться. Это можно сделать в считанные минуты, просто кликнув на кнопку “Зарегистрироваться” на главной странице сайта.

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

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

Pin Up Казино предлагает игрокам широкий спектр игр, включая:

Слоты: Pin Up Казино предлагает более 1 000 слотов от ведущих разработчиков, включая NetEnt, Microgaming и Playtech.

Карточные игры: Pin Up Казино предлагает игрокам несколько карточных игр, включая блэкджек, покер и бинго.

Рулетка: Pin Up Казино предлагает игрокам несколько вариантов рулетки, включая американскую и европейскую рулетку.

Pin Up Казино предлагает игрокам также несколько способов оплаты, включая Visa, Mastercard, Skrill и Neteller.

Если у вас возникли вопросы или проблемы с игрой на официальном сайте Pin Up Казино, то вам можно обратиться к поддержке клиентов, которая доступна 24/7.

Пин Ап Казино – Официальный сайт Pin Up Casino

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

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

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

Вторым преимуществом является широкий спектр игр. Pin Up Casino предлагает игрокам более 3 000 игр, включая слоты, карточные игры, рулетку и другие. Это позволяет игрокам выбрать игру, которая лучше всего подходит им.

Третьим преимуществом является система бонусов. Pin Up Casino предлагает игрокам различные бонусы, включая приветственные бонусы, бонусы за депозит и другие. Это позволяет игрокам получать дополнительные деньги для игры.

Наконец, официальный сайт Pin Up Casino предлагает игрокам поддержку. Сайт имеет отдел поддержки, который работает круглосуточно, чтобы помочь игрокам в случае каких-либо вопросов или проблем.

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

Входи и играй

Если вы ищете место, где можно играть в казино и получать реальные выигрыши, то Pin Up Casino – ваш выбор!

В Pin Up Casino вы можете играть в более 3 000 игр, включая слоты, карточные игры, рулетку и другие. Мы предлагаем вам широкий выбор игр от ведущих разработчиков, чтобы вы могли найти игру, которая вам понравится.

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

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

  • Более 3 000 игр
  • Программа лояльности
  • Различные способы оплаты
  • Приветственный бонус для новых игроков

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

Начните играть сейчас и получайте выигрыши!

  • Зарегистрируйтесь на сайте
  • Выберите игру, которая вам понравится
  • Начните играть и получайте выигрыши!
  • Удобство и безопасность в Pin Up Casino

    Безопасность

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

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

    Удобство

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

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

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

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

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