/** * 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' ) ), ); } } IWin Vit Nam tri nghim c cc ton din.4407 – Chambers Of Vikramaditya

IWin Vit Nam tri nghim c cc ton din.4407

IWin Việt Nam – trải nghiệm cá cược toàn diện

IWin Club – một trong những nhà cái hàng đầu tại Việt Nam, mang đến cho người chơi một trải nghiệm cá cược toàn diện và thú vị. Với giao diện thân thiện, dễ sử dụng, IWin Club cung cấp một loạt các trò chơi cá cược trực tuyến đa dạng, từ casino trực tuyến, xổ số, đến các trò chơi cá cược thể thao.

IWin App là ứng dụng di động tiện lợi, cho phép người chơi tham gia các trò chơi yêu thích mọi lúc, mọi nơi. tải iwin ngay hôm nay để trải nghiệm dịch vụ cá cược nhanh chóng và an toàn.

IWin Net – trang web chính thức của nhà cái, cung cấp cho người chơi một môi trường cá cược trực tuyến an toàn và đáng tin cậy. Với hệ thống bảo mật tiên tiến, IWin Net đảm bảo rằng thông tin cá nhân và giao dịch của bạn luôn được bảo vệ.

Đăng ký ngay hôm nay để tận hưởng những ưu đãi hấp dẫn và tham gia vào cộng đồng người chơi sôi động của IWin Việt Nam.

IWin Việt Nam: Giới thiệu

IWin Việt Nam là một trong những nhà cung cấp dịch vụ cá cược trực tuyến hàng đầu tại Việt Nam. Trải nghiệm toàn diện của IWin bao gồm nhiều trò chơi cá cược đa dạng, từ casino trực tuyến, thể thao ảo, đến xổ số và nhiều trò chơi khác. Để tham gia, người chơi có thể tải iwin app hoặc truy cập iwin club trên trình duyệt của mình. IWin Việt Nam cam kết mang đến cho người chơi một môi trường chơi game an toàn, công bằng và thú vị.

Đa dạng cá cược

Iwin Việt Nam cung cấp cho người chơi một loạt các trò chơi cược đa dạng, đáp ứng mọi sở thích và nhu cầu của khách hàng. Từ các trò chơi truyền thống đến những trò chơi hiện đại, iwin.net và iwin app đều có sẵn để tải và trải nghiệm.

Cá cược thể thao

Trò chơi cá cược thể thao tại iwin Việt Nam bao gồm bóng đá, bóng rổ, bóng chày, đua xe, và nhiều môn thể thao khác. Người chơi có thể đặt cược vào kết quả của các trận đấu, tỷ số, và nhiều loại cược khác.

Cá cược casino trực tuyến

Iwin cung cấp một loạt các trò chơi casino trực tuyến, bao gồm blackjack, roulette, sicbo, và nhiều trò chơi khác. Người chơi có thể trải nghiệm cảm giác chơi tại sòng bạc thực sự từ nhà của mình.

Cá cược thể thao điện tử (ESports)

Trò chơi cá cược ESports tại iwin Việt Nam cho phép người chơi đặt cược vào các trận đấu giữa các đội và cá nhân trong các trò chơi điện tử phổ biến như Dota 2, League of Legends, và Counter-Strike: Global Offensive.

Cá cược xổ số và lô đề

Iwin cũng cung cấp các trò chơi xổ số và lô đề, cho phép người chơi đặt cược vào kết quả của các kỳ xổ số và lô đề.

Cá cược trực tuyến khác

Ngoài ra, iwin còn cung cấp các trò chơi cá cược trực tuyến khác như xổ số điện tử, cá cược thời tiết, và nhiều trò chơi khác. Người chơi có thể tìm thấy nhiều lựa chọn thú vị để thỏa mãn sở thích cá cược của mình.

Để trải nghiệm tất cả các trò chơi cược đa dạng này, hãy truy cập iwin.net hoặc tải iwin app trên điện thoại di động của bạn. Hãy khám phá thế giới cược phong phú của iwin và tận hưởng những trải nghiệm thú vị!

Dịch vụ khách hàng và bảo mật

Iwin Việt Nam chú trọng vào việc cung cấp dịch vụ khách hàng chất lượng cao và bảo mật thông tin khách hàng. Chúng tôi hiểu rằng sự hài lòng của khách hàng là nền tảng cho sự phát triển bền vững của công ty. Do đó, chúng tôi đã đầu tư vào đội ngũ hỗ trợ khách hàng chuyên nghiệp, sẵn sàng giải đáp mọi thắc mắc và hỗ trợ 24/7 qua các kênh liên lạc đa dạng như điện thoại, email và chat trực tuyến.

Đối với bảo mật, Iwin sử dụng công nghệ tiên tiến để bảo vệ thông tin cá nhân và giao dịch của khách hàng. Hệ thống mã hóa SSL đảm bảo rằng tất cả dữ liệu được truyền tải an toàn và không bị truy cập trái phép. Chúng tôi cũng tuân thủ các quy định về bảo mật dữ liệu nghiêm ngặt, bảo vệ quyền riêng tư của khách hàng.

Iwin club và Iwin net đều tuân thủ các quy định về cờ bạc trực tuyến, đảm bảo rằng tất cả hoạt động đều minh bạch và công bằng. Chúng tôi cung cấp các trò chơi cờ bạc công bằng, được kiểm duyệt kỹ lưỡng để đảm bảo rằng kết quả không thể bị thao túng.

Chúng tôi cam kết không chia sẻ thông tin cá nhân của khách hàng với bất kỳ bên thứ ba nào, trừ khi có yêu cầu hợp pháp từ các cơ quan pháp luật. Iwin app cũng được thiết kế để bảo vệ thông tin của người dùng, với các biện pháp bảo mật mạnh mẽ để ngăn chặn truy cập trái phép.

Khuyến mãi và ưu đãi đặc biệt

Tải iwin, iwin club, iwin net và trải nghiệm ngay các chương trình khuyến mãi và ưu đãi đặc biệt:

– Khuyến mãi chào mừng: Khi đăng ký tài khoản mới, bạn sẽ nhận được ưu đãi lên đến 100% tiền nạp đầu tiên.

– Khuyến mãi hàng tuần: Mỗi tuần, iwin club sẽ tổ chức các sự kiện khuyến mãi với phần thưởng hấp dẫn.

– Khuyến mãi hàng tháng: iwin net cung cấp các chương trình khuyến mãi hàng tháng với nhiều giải thưởng giá trị.

– Khuyến mãi sinh nhật: Thành viên iwin sẽ nhận được ưu đãi đặc biệt vào ngày sinh nhật của mình.

– Khuyến mãi giới thiệu bạn bè: Chia sẻ iwin với bạn bè và nhận thưởng hấp dẫn.

– Khuyến mãi nạp tiền: Khi nạp tiền vào tài khoản, bạn sẽ nhận được phần thưởng theo tỷ lệ cụ thể.

– Khuyến mãi chơi game: Tham gia các trò chơi đặc biệt để nhận thưởng hấp dẫn.

– Khuyến mãi VIP: Thành viên VIP sẽ nhận được nhiều ưu đãi và quyền lợi đặc biệt.

– Khuyến mãi sự kiện đặc biệt: Tham gia các sự kiện đặc biệt do iwin tổ chức để nhận thưởng giá trị.