/** * 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.2232 – Chambers Of Vikramaditya

IWin Vit Nam tri nghim c cc ton din.2232

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

iwin .net – một trong những nhà cái cá cược trực tuyến hàng đầu tại Việt Nam, mang đến cho người chơi trải nghiệm cá cược toàn diện và thú vị. Với ứng dụng IWin app, người chơi có thể tham gia các trò chơi cá cược yêu thích mọi lúc, mọi nơi chỉ cần có kết nối internet.

Để bắt đầu trải nghiệm, hãy tải iwin ngay hôm nay. Quá trình tải ứng dụng nhanh chóng và đơn giản, giúp bạn dễ dàng truy cập vào các trò chơi và dịch vụ của IWin. Với giao diện thân thiện và dễ sử dụng, IWin.net đảm bảo rằng ngay cả những người chơi mới cũng có thể nhanh chóng quen thuộc với hệ thống.

Trải nghiệm cá cược toàn diện tại IWin Việt Nam không chỉ dừng lại ở việc cung cấp nhiều trò chơi đa dạng. Nhà cái còn chú trọng đến an toàn và bảo mật thông tin của người chơi, với hệ thống bảo mật tiên tiến và quy trình xác minh danh tính chặt chẽ. Đảm bảo rằng mọi giao dịch và thông tin cá nhân đều được bảo vệ một cách an toàn.

Nhận ngay nhiều ưu đãi hấp dẫn khi đăng ký tài khoản và tham gia các trò chơi tại IWin.net. Với đội ngũ hỗ trợ khách hàng chuyên nghiệp, bạn sẽ luôn được hỗ trợ kịp thời trong mọi thắc mắc và vấn đề phát sinh. Hãy trải nghiệm ngay hôm nay và khám phá thế giới cá cược trực tuyến đầy thú vị 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. Trang web chính của công ty là iwin.net, nơi cung cấp một loạt các trò chơi cá cược đa dạng và hấp dẫn. Ngoài trang web, IWin còn phát triển ứng dụng di động iwin app, giúp người chơi có thể tham gia cá cược mọi lúc, mọi nơi thông qua điện thoại di động. Đồng thời, IWin Club là một phần quan trọng của hệ sinh thái của công ty, cung cấp cho người chơi một môi trường cá cược an toàn và tiện lợi. Tất cả các dịch vụ của IWin đều tuân thủ các quy định pháp luật và tiêu chuẩn an toàn nghiêm ngặt, đảm bảo quyền lợi của người chơi.

Đa dạng cá cược

Iwin Việt Nam cung cấp một loạt các trò chơi cá cược đa dạng, đáp ứng nhu cầu của nhiều đối tượng người chơi khác nhau. Từ các trò chơi truyền thống như xóc đĩa, bầu cua, tài xỉu đến các trò chơi hiện đại như slot machine, baccarat, poker, người chơi có thể lựa chọn theo sở thích của mình.

Tải iwin club hoặc sử dụng iwin app, người chơi có thể trải nghiệm các trò chơi cá cược một cách tiện lợi và an toàn. Iwin app cung cấp giao diện dễ sử dụng, giúp người chơi dễ dàng tham gia vào các trò chơi yêu thích của mình.

Xóc đĩa và bầu cua

Xóc đĩa và bầu cua là hai trò chơi truyền thống được yêu thích tại Iwin Việt Nam. Người chơi có thể đặt cược vào kết quả của các trò chơi này, với nhiều lựa chọn cược khác nhau như cược số, cược màu, cược lẻ chẵn, v.v.

Slot machine và baccarat

Slot machine và baccarat là hai trò chơi hiện đại được nhiều người chơi yêu thích. Slot machine cung cấp nhiều lựa chọn game với các chủ đề đa dạng, từ cổ tích đến thể thao. Trò chơi baccarat, một trò chơi bài nổi tiếng, cũng được cung cấp với nhiều lựa chọn cược khác nhau, giúp người chơi có nhiều cơ hội để chiến thắng.

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.

Để đảm bảo an toàn thông tin, Iwin Việt Nam áp dụng các biện pháp bảo mật tiên tiến nhất. Tất cả thông tin cá nhân và giao dịch của khách hàng đều được mã hóa và bảo vệ bởi hệ thống an ninh cao cấp. Chúng tôi cam kết không chia sẻ thông tin 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.

Tải iwin club và iwin app

Để trải nghiệm trọn vẹn, khách hàng có thể tải iwin club và iwin app trên điện thoại di động của mình. Việc tải ứng dụng giúp khách hàng dễ dàng tham gia các trò chơi và cược mọi lúc mọi nơi mà không cần truy cập trang web. Bạn có thể tải ứng dụng thông qua các kho ứng dụng chính thức như Google Play Store hoặc App Store.

  • Tải iwin club: https://www.getraddle.com/
  • Tải iwin app: https://www.getraddle.com/

Chúng tôi luôn cập nhật và cải tiến dịch vụ để mang lại trải nghiệm tốt nhất cho khách hàng. Hãy liên hệ với chúng tôi qua hotline hoặc email để nhận hỗ trợ nhanh chóng và hiệu quả.

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 ưu đãi hấp dẫn từ IWin Việt Nam:

– 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 ngày: Mỗi ngày, bạn có cơ hội nhận thưởng từ 50.000 đến 500.000 VND khi tham gia các trò chơi.

– Khuyến mãi hàng tuần: Trong tuần, bạn sẽ nhận được ưu đãi từ 100.000 đến 1.000.000 VND khi đạt yêu cầu về doanh thu cược.

– Khuyến mãi hàng tháng: Mỗi tháng, IWin Việt Nam sẽ tổ chức các sự kiện đặc biệt, mang đến cơ hội nhận thưởng lớn cho thành viên.

– Khuyến mãi giới thiệu bạn bè: Bạn sẽ nhận được ưu đãi khi giới thiệu thành công người chơi mới tải iwin, iwin club, iwin net.

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

– Khuyến mãi VIP: Thành viên VIP sẽ nhận được nhiều ưu đãi đặc biệt, bao gồm tiền thưởng, ưu đãi cá nhân và nhiều hơn nữa.

Ưu đãi đặc biệt

– Tặng thưởng khi 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ệ nạp.

– Tặng thưởng khi rút tiền: Khi rút tiền, bạn sẽ nhận được phần thưởng theo tỷ lệ rút.

– Tặng thưởng khi chơi game: Khi chơi các trò chơi, bạn sẽ nhận được phần thưởng theo doanh thu cược.