/** * 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' ) ), ); } } kr casino (189) – Chambers Of Vikramaditya

kr casino (189)

한국의 온라인 카지노 – 플랫폼 전체 검토

우리 카지노는 한국에서 가장 안전하고 신뢰할 수 있는 온라인 카지노 플랫폼 중 하나입니다. 다양한 게임과 카지노 보증을 제공하며, 슬롯 사이트부터 실시간 카지노사이트까지 광범위한 선택을 제공합니다. 특히 킹덤 카지노사이트는 카지노 커뮤니티에서 높은 평가를 받고 있으며, 많은 플레이어들이 카지노사이트 추천으로 이곳을 선택합니다.

우리 카지노는 안전한 게임 환경을 제공하기 위해 최선을 다하고 있습니다. 카지노 보증을 통해 플레이어의 자금 안전을 보장하며, 다양한 슬롯 사이트를 통해 다양한 게임을 즐길 수 있습니다. 또한, 실시간 카지노사이트를 통해 라이브 딜러와 함께 실제 카지노 분위기를 경험할 수 있습니다.

카지노 커뮤니티에서는 플레이어들이 직접 리뷰와 추천을 공유하며, 카지노사이트 추천을 통해 신뢰할 수 있는 플랫폼을 찾을 수 있습니다. 우리 카지노는 이러한 커뮤니티의 일원으로, 안전하고 즐거운 게임 경험을 제공하기 위해 노력하고 있습니다.

온라인 카지노의 법적 상태와 규제

한국에서 온라인 카지노의 법적 상태는 복잡합니다. 현재까지 정식으로 인가받은 카지노사이트는 없으며, 대부분의 카지노사이트는 불법으로 운영되고 있습니다. 그러나 이들 사이트는 사용자들의 인기로 인해 계속해서 운영되고 있으며, 많은 플레이어들이 슬롯 사이트, 실시간 카지노사이트, 카지노 커뮤니티 등을 통해 게임을 즐기고 있습니다.

정부는 카지노사이트의 불법 운영을 막기 위해 다양한 규제를 시행하고 있습니다. 카지노 보증, 카지노사이트 모음, 카지노사이트 추천 등의 서비스 제공자들은 이러한 규제를 준수해야 하며, 사용자들에게 안전하고 공정한 게임 환경을 제공해야 합니다. 특히, KINGDOM 카지노사이트와 같은 플랫폼은 사용자들의 신뢰를 얻기 위해 엄격한 검증 과정을 거치고 있습니다.

온라인 카지노는 규제의 대상이 되면서도, 플레이어들의 인기로 인해 계속해서 발전하고 있습니다. 이러한 상황에서 사용자들은 카지노 커뮤니티를 통해 정보를 공유하고, 안전한 카지노사이트를 찾는 데 도움을 받을 수 있습니다.

추천 플랫폼의 특징과 비교 분석

카지노사이트 추천에서 가장 중요한 요소는 안전성, 보증금, 그리고 다양한 게임의 제공입니다. 우리 카지노와 같은 플랫폼은 이러한 측면에서 우수한 성적을 보여줍니다. 슬롯 사이트를 포함한 다양한 게임을 제공하며, 실시간 카지노사이트로는 킹덤 카지노사이트가 뛰어나게 평가받고 있습니다.

우리 카지노는 고객의 안전을 최우선으로 생각하며, 모든 거래는 카지노 보증을 통해 보호됩니다. 이는 플레이어가 돈을 잃을 위험 없이 게임을 즐길 수 있게 합니다. 또한, 우리 카지노는 다양한 슬롯 게임을 제공하며, 실시간 카지노사이트로서는 킹덤 카지노사이트와 경쟁합니다.

킹덤 카지노사이트는 실시간 카지노 게임을 온라인카지노 순위 제공하며, 라이브 딜러와 상호작용할 수 있는 기회를 제공합니다. 이는 플레이어에게 더욱 생동감 넘치는 게임 경험을 선사합니다. 또한, 킹덤 카지노사이트는 카지노 커뮤니티와의 상호작용을 촉진하는 다양한 기능을 제공합니다.

두 플랫폼 모두 플레이어에게 최상의 게임 경험을 제공하기 위해 노력하고 있지만, 우리 카지노는 보다 포괄적인 보증 서비스를 제공하며, 킹덤 카지노사이트는 실시간 게임 경험을 강조합니다. 이러한 특징들은 각 플랫폼의 강점을 보여주며, 선택은 플레이어의 개인적인 선호도에 따라 달라질 수 있습니다.

안전성과 보안을 위한 조언

온라인 카지노를 이용할 때 가장 중요한 것은 안전성과 보안입니다. 카지노사이트를 선택할 때는 다음과 같은 조언을 따르는 것이 중요합니다.

우선, 카지노사이트가 안전하고 신뢰할 수 있는지 확인해야 합니다. 실시간 카지노사이트는 라이브 딜러와 함께 실제 카지노 환경을 제공하며, 이는 보안과 신뢰성을 높입니다. 우리 카지노와 같은 카지노사이트 모음 사이트를 통해 다양한 카지노사이트를 비교하고 선택할 수 있습니다.

카지노사이트를 추천하는 곳에서도 카지노 보증이 있는 곳을 선택하는 것이 좋습니다. 카지노사이트 추천 사이트는 신뢰할 수 있는 카지노사이트를 선별하여 제공하므로, 이들 사이트를 통해 슬롯 사이트와 같은 다양한 카지노 게임을 즐길 수 있습니다.

특히, 킹덤 카지노사이트와 같은 카지노사이트는 안전성과 보안을 위해 최고 수준의 보안 기술을 사용합니다. 이러한 카지노사이트는 고객의 개인정보와 금융 정보를 보호하기 위해 SSL 암호화를 사용하며, 이는 데이터를 안전하게 전송합니다.

또한, 카지노사이트는 고객의 개인정보와 금융 정보를 안전하게 보호하기 위해 다양한 보안 기술을 사용합니다. 이는 고객의 신뢰를 얻고, 안전한 게임 환경을 제공하기 위한 필수 조건입니다.