/** * 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' ) ), ); } } Bước Vào Thế Giới May Mắn, Thắng Lớn Cùng mcw – Cổng Game Đỉnh Cao Của Bạn. – Chambers Of Vikramaditya

Bước Vào Thế Giới May Mắn, Thắng Lớn Cùng mcw – Cổng Game Đỉnh Cao Của Bạn.

Bước Vào Thế Giới May Mắn, Thắng Lớn Cùng mcw – Cổng Game Đỉnh Cao Của Bạn.

Chào mừng bạn đến với thế giới giải trí đỉnh cao tại mcw, nơi mà may mắn và niềm vui chờ đón bạn ở mọi khoảnh khắc. Chúng tôi tự hào là cổng game hàng đầu, mang đến trải nghiệm cá cược trực tuyến tuyệt vời và cơ hội giành chiến thắng lớn. Hãy cùng khám phá những điều thú vị mà mcw mang lại cho bạn.

Khám Phá Thế Giới Cờ Bạc Trực Tuyến tại mcw

mcw là một nền tảng cá cược trực tuyến đa dạng, cung cấp nhiều trò chơi hấp dẫn như cá cược thể thao, sòng bạc trực tuyến và các trò chơi slot. Với giao diện thân thiện, dễ sử dụng và hệ thống bảo mật tiên tiến, mcw đảm bảo mang đến cho bạn trải nghiệm an toàn và đáng tin cậy. Chúng tôi luôn cập nhật những trò chơi mới nhất và các chương trình khuyến mãi hấp dẫn để đáp ứng nhu cầu của mọi người chơi.

Cá Cược Thể Thao Đa Dạng

mcw cung cấp đầy đủ các môn thể thao phổ biến như bóng đá, bóng rổ, quần vợt, bóng chuyền và nhiều môn thể thao khác. Bạn có thể đặt cược vào các trận đấu diễn ra trên toàn thế giới với tỷ lệ cược cạnh tranh và nhiều loại cược khác nhau. Hệ thống cập nhật kết quả nhanh chóng và chính xác, giúp bạn theo dõi kết quả cược một cách dễ dàng.

Sòng Bạc Trực Tuyến Uy Tín

Sòng bạc trực tuyến tại mcw mang đến cho bạn cảm giác như đang chơi tại một sòng bạc thực thụ. Với các trò chơi như baccarat, roulette, blackjack và nhiều trò chơi khác, bạn có thể thử vận may và giành chiến thắng lớn. Các trò chơi được cung cấp bởi các nhà cung cấp phần mềm hàng đầu, đảm bảo tính công bằng và minh bạch.

Các Trò Chơi Slot Hấp Dẫn tại mcw

mcw sở hữu một bộ sưu tập các trò chơi slot đa dạng với nhiều chủ đề và phong cách khác nhau. Bạn có thể khám phá những trò chơi slot cổ điển, các trò chơi slot video hiện đại và các trò chơi slot jackpot với giải thưởng lớn. Các trò chơi slot tại mcw đều được thiết kế với đồ họa đẹp mắt, âm thanh sống động và các tính năng đặc biệt hấp dẫn.

Tên Trò Chơi Nhà Cung Cấp RTP (Return to Player)
Sweet Bonanza Pragmatic Play 96.51%
Gates of Olympus Pragmatic Play 96.50%
Book of Dead Play’n GO 96.21%

Ưu Đãi và Khuyến Mãi Hấp Dẫn

mcw thường xuyên tổ chức các chương trình khuyến mãi và ưu đãi đặc biệt dành cho cả thành viên mới và thành viên cũ. Bạn có thể nhận được tiền thưởng chào mừng, tiền thưởng nạp lại, tiền thưởng hoàn trả và nhiều khuyến mãi khác. Các chương trình khuyến mãi này giúp bạn tăng cơ hội chiến thắng và tận hưởng trải nghiệm cá cược thú vị hơn.

Hỗ Trợ Khách Hàng Chuyên Nghiệp

mcw luôn đặt sự hài lòng của khách hàng lên hàng đầu. Chúng tôi cung cấp dịch vụ hỗ trợ khách hàng 24/7 thông qua nhiều kênh khác nhau như chat trực tuyến, email và điện thoại. Đội ngũ hỗ trợ khách hàng chuyên nghiệp và tận tâm sẽ luôn sẵn sàng giải đáp mọi thắc mắc và hỗ trợ bạn trong suốt quá trình chơi game.

Bảo Mật và An Toàn Tuyệt Đối tại mcw

mcw cam kết đảm bảo an toàn và bảo mật thông tin cá nhân của bạn. Chúng tôi sử dụng công nghệ mã hóa tiên tiến và các biện pháp bảo mật nghiêm ngặt để bảo vệ dữ liệu của bạn khỏi sự truy cập trái phép. Tất cả các giao dịch tài chính đều được thực hiện thông qua các cổng thanh toán an toàn và đáng tin cậy.

  • Mã hóa SSL 128-bit
  • Chính sách bảo mật nghiêm ngặt
  • Kiểm toán độc lập định kỳ
  • Hỗ trợ thanh toán đa dạng

Hướng Dẫn Đăng Ký và Nạp Tiền

Việc đăng ký tài khoản tại mcw rất đơn giản và nhanh chóng. Bạn chỉ cần cung cấp một vài thông tin cơ bản và xác minh tài khoản của mình. Sau khi đăng ký thành công, bạn có thể nạp tiền vào tài khoản của mình thông qua nhiều phương thức khác nhau như chuyển khoản ngân hàng, thẻ tín dụng và ví điện tử. mcw cung cấp hướng dẫn chi tiết về cách đăng ký và nạp tiền để giúp bạn thực hiện một cách dễ dàng.

Lời Khuyên Khi Tham Gia Cá Cược

Trước khi bắt đầu tham gia cá cược tại mcw, hãy luôn nhớ rằng cá cược là một hình thức giải trí và bạn nên chơi có trách nhiệm. Hãy đặt ra một ngân sách cụ thể và tuân thủ nó, đừng để cá cược ảnh hưởng đến cuộc sống cá nhân và tài chính của bạn. Luôn giữ một thái độ bình tĩnh và sáng suốt khi đưa ra quyết định cá cược.

  1. Đặt ngân sách và tuân thủ nó
  2. Chơi có trách nhiệm
  3. Tìm hiểu kỹ luật chơi trước khi tham gia
  4. Quản lý thời gian hợp lý
  5. Đừng cố gắng gỡ gạc khi thua

Tương Lai Của mcw: Đổi Mới và Phát Triển

mcw cam kết không ngừng đổi mới và phát triển để mang đến cho bạn những trải nghiệm cá cược tốt nhất. Chúng tôi luôn lắng nghe ý kiến phản hồi của bạn và cải thiện dịch vụ của mình để đáp ứng nhu cầu ngày càng cao của thị trường. mcw luôn nỗ lực trở thành cổng game hàng đầu khu vực và thế giới.