/** * 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' ) ), ); } } 1xbet .6288 – Chambers Of Vikramaditya

1xbet .6288

1xbet كازينو – اكتشف الألعاب المميزة في مصر

▶️ يلعب

Содержимое

إذا كنت تبحث عن تجربة ألعاب الكازينو المثيرة والمتنوعة، فعليك تجربة تطبيق 1xbet. تحميل برنامج 1xbet مهكر أو تحميل 1xbet يوفر لك الوصول إلى مجموعة واسعة من الألعاب التي تناسب جميع الأذواق. سواء كنت تفضل الألعاب التقليدية مثل البلاك جاك والروليت، أو الألعاب الحديثة مثل السلوتات ثلاثية الأبعاد، فإن 1xbet تقدم لك كل هذا وأكثر.

تنزيل 1xbet أو 1xbet تحميل يضمن لك أمانًا عاليًا وسرية بياناتك الشخصية. التطبيق يوفر لك تجربة سهلة الاستخدام وواجهة بصرية جذابة، مما يجعل اللعب أكثر متعة. يمكنك تحميل لعبة 1xbet أو تنزيل برنامج 1xbet على هاتفك الذكي أو الكمبيوتر الخاص بك للاستمتاع بأفضل تجربة لعب في أي وقت وأي مكان.

1xbet تقدم لك تجربة فريدة من نوعها في عالم الألعاب الكازينو، حيث يمكنك تجربة أحدث الألعاب والجوائز الكبرى. تحميل 1xbet اخر إصدار يضمن لك الوصول إلى أحدث الميزات والتحديثات، مما يجعل تجربتك أكثر متعة وتحديًا.

تحميل 1xbet و تطبيق 1xbet: ألعاب الكازينو المميزة في مصر

لل准入,请您提供更具体的信息或问题,以便我能更好地帮助您。如果您是想了解某个特定主题或需要某种类型的帮助,请详细说明。

أفضل الألعاب في 1xbet كازينو

1xbet كازينو 1xbet الأصلي يقدم مجموعة واسعة من الألعاب المميزة التي تلبي احتياجات جميع اللاعبين. سواء كنت مبتدئًا أو محترفًا، ستجد هنا الألعاب التي تناسبك.

  • البلاك جاك: لعبة البلاك جاك متاحة في 1xbet كازينو بجودة عالية وتجربة لعب ممتازة. يمكنك اختيار الطاولات بحسب سرعة اللعب والحد الأدنى لل stavka.
  • الروлет: تتوفر ألعاب الروлет المختلفة مثل الروлет الأمريكي والروлет الأوروبي والروлет الفرنساوي. يمكنك الاستمتاع بتجربة لعب ممتعة وفرصة الفوز الكبيرة.
  • الماشينات القasino: مجموعة واسعة من الألعاب الكازينو مثل سوبر مان وسونيك ومارفل. يمكنك اختيار اللعبة التي تحب وبدء اللعب بسهولة.
  • البิงو: تجربة لعب البينجو ممتعة ورائعة في 1xbet كازينو. يمكنك المشاركة في الألعاب الحية أو اللعب بشكل فردي.

للحصول على تجربة لعب مثالية، يمكنك تنزيل تطبيق 1xbet أو تحميل برنامج 1xbet مهكر للاستفادة من جميع الميزات المتاحة. تحميل 1xbet اخر إصدار يضمن لك أمانًا وسرعة في اللعب.

تطبيق 1xbet متاح للتنزيل على متجر Google Play وApp Store. يمكنك تنزيل 1xbet أو تحميل برنامج 1xbet مهكر للاستمتاع بتجربة لعب متميزة.

كيفية اللعب في 1xbet كازينو

للعب في 1xbet كازينو، اتبع الخطوات التالية:

1. تحميل لعبة 1xbet: يمكنك تحميل تطبيق 1xbet مجاناً على هاتفك الذكي من متجر التطبيقات الخاص بهاتفك. للحصول على تجربة مستقرة، ننصح بتحميل تحميل 1xbet اخر إصدار.

2. تثبيت التطبيق: بعد تحميل تطبيق 1xbet، قم بفتحه واتبع التعليمات لاستكمال عملية التثبيت.

3. تسجيل الدخول: بمجرد تثبيت التطبيق، قم بتسجيل الدخول باستخدام حسابك في 1xbet. إذا كنت جديدًا، يمكنك التسجيل بسهولة من خلال التطبيق.

4. الاختيار من بين الألعاب: بمجرد تسجيل الدخول، ستجد مجموعة واسعة من الألعاب المميزة في قسم الكازينو. يمكنك الاختيار من بين العاب الروليت، البلاك جاك، والكازينو المباشر.

5. الإيداع: للبدء في اللعب، يجب عليك إيداع بعض المال في حسابك. يمكنك القيام بذلك من خلال التطبيق بسهولة.

6. البدء في اللعب: بمجرد إيداع المال، يمكنك البدء في اللعب في الألعاب المفضلة لديك. تذكر أن هناك قواعد وأحكام لكل لعبة، لذا تأكد من قراءتها قبل البدء.

7. استرخاء واستمتع: مع تحميل 1xbet اخر إصدار، يمكنك الاستمتاع بتجربة لعب آمنة وممتعة في أي وقت وأي مكان.

عروض وخصومات 1xbet كازينو في مصر

تقدم 1xbet كازينو في مصر العديد من العروض والخصومات المثيرة للاهتمام لجميع اللاعبين. يمكنك تحميل 1xbet اخر إصدار من خلال تطبيق 1xbet أو تنزيل برنامج 1xbet مجاناً على هاتفك الذكي أو الكمبيوتر. تحميل 1xbet اخر إصدار يضمن لك أفضل تجربة لعب ممكنة مع ميزات جديدة وتحسينات على الأداء.

عندما تقوم بتنزيل 1xbet أو تحميل لعبة 1xbet، ستجد مجموعة متنوعة من العروض والخصومات التي تقدمها الشركة لجذب المزيد من اللاعبين. هذه العروض قد تشمل:

  • الترحيب بخصم مميز للاعبين الجدد عند التسجيل لأول مرة.
  • عروض يومية وشهارية تقدم مكافآت إضافية على الودائع واللعب.
  • خصومات على الألعاب المحددة أو الألعاب الجماعية.
  • عروض خاصة لليوم الوطني أو المناسبات الوطنية في مصر.

للحصول على أحدث العروض والخصومات، تأكد من زيارة الموقع الرسمي لـ 1xbet أو تحميل تطبيق 1xbet وتسجيل الدخول لحسابك. يمكنك أيضًا التواصل مع خدمة العملاء للحصول على معلومات محدثة حول العروض الحالية.

Leave a Comment

Your email address will not be published. Required fields are marked *