/** * 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' ) ), ); } } Əyləncəli anlar və böyük uduşlar axtarırsınız Fraga az ilə xəyalınızdakı oyun dünyasına qədəm qoyun! – Chambers Of Vikramaditya

Əyləncəli anlar və böyük uduşlar axtarırsınız Fraga az ilə xəyalınızdakı oyun dünyasına qədəm qoyun!

Əyləncəli anlar və böyük uduşlar axtarırsınız? Fraga az ilə xəyalınızdakı oyun dünyasına qədəm qoyun!

Dəyişən dünyada əyləncə və uduş axtarışı həmişə aktualdır. İnsanlar stressdən qurtulmaq, xoş vaxt keçirmək və həm də pul qazanmaq üçün müxtəlif imkanlara baxır. Məhz bu səbəbdən onlayn kazinolar son illərdə Azərbaycan da daxil olmaqla bir çox ölkədə populyarlaşmışdır. Bu platformalar evinizin rahatlığından çıxmadan, müxtəlif oyunları oynamaq və böyük uduşlar qazanmaq imkanı təqdim edir. Eləcə də, fraga az sayəsində siz hər zaman oyun dünyasının ən maraqlı təkliflərinə sahib ola bilərsiniz.

Onlayn kazinoların təklif etdiyi geniş çeşid oyunlar hər kəsin zövqünə uyğun bir seçənəyin olduğunu göstərir. Slot oyunlarından klassik stolüstü oyunlara, canlı kazino oyunlarından idman mərclərinə qədər, hər oyunçu özünə maraqlı bir oyun tapacaqdır. Bu oyunlar həm əyləncəli, həm də potensial uduşlu olduğu üçün böyük bir auditoriyaya malikdir. Fraga az platforması isə, bu imkanları daha da genişləndirərək, oyunçulara ən yaxşı təcrübəni yaşatmaq üçün çalışır.

Onlayn Kazinoların Təhlükəsizliyi və Lisenziya Məsələləri

Onlayn kazinolarda oynayarkən təhlükəsizlik məsələsi çox vacibdir. Çünki, şəxsi məlumatlarınızın və maliyyə hesablarınızın qorunması ön planda olmalıdır. Bu səbəbdən, etibarlı və lisenziyalı kazinoları seçmək son dərəcə vacibdir. Lisenziya, kazinonun müəyyən standartlara uyğun olaraq fəaliyyət göstərdiyinin göstəricisidir. Belə kazinolar müntəzəm olaraq yoxlanılır və oyunçuların hüquqlarının qorunduğuna əmin olunur. Məsələn, Malta Gaming Authority (MGA) və İngiltərə Gambling Commission (UKGC) kimi nüfuzlu orqanlar tərəfindən verilən lisenziyalar, kazinonun etibarını artırır.

Lisenziya Verən Orqan Nəzarət Edilən Aspectlər
Malta Gaming Authority (MGA) Oyunçuların hüquqları, oyunların ədaləti, maliyyə təhlükəsizliyi
İngiltərə Gambling Commission (UKGC) Reklam standartları, məsuliyyətli oyun, oyunların təhlükəsizliyi
Curacao eGaming Lisenziyanın verilməsi və nəzarət edilməsi

Slot Oyunları: Populyar Seçimlər və Strategiyalar

Slot oyunları, onlayn kazinoların ən populyar oyunlarından biridir. Sadə oyun mexanikası, böyük uduş imkanı və müxtəlif mövzular sayəsində slotlar hər kəsin sevimli oyununa çevrilmişdir. Slot oyunlarının müxtəlif növləri mövcuddur, məsələn, klassik slotlar, video slotlar, progressiv slotlar və 3D slotlar. Hər növün özünə xas xüsusiyyətləri və uduş şansları vardır. Fraga az platforması isə, ən yaxşı slot oyunlarını təqdim edərək, oyunçuların zövqünə cavab verən geniş seçimlər sunur. Slot oyunlarında uduş şansını artırmaq üçün bəzi strategiyalardan istifadə etmək olar.

  • Yüksək RTP (Return to Player) dərəcəsinə malik oyunları seçin.
  • Mərcinizi diqqətlə idarə edin.
  • Bonus oyunlarından və pulsuz fırlanmalardan faydalanın.
  • Oyunun qaydalarını və xüsusiyyətlərini öyrənin.

Canlı Kazino Oyunları: Real Vaxtda Oyun Təcrübəsi

Canlı kazino oyunları, onlayn kazinoların ən sürətlə inkişaf edən sahələrindən biridir. Bu oyunlar, real vaxtda canlı dilerlərlə oynamaq imkanı təqdim edir. Bu sayədə, oyunçular real kazino atmosferini evlərində yaşaya bilirlər. Canlı kazino oyunları arasında ən populyarları baccarat, blackjack, rulet və pokerdir. Bu oyunlar həm təcrübəli oyunçular, həm də yeni başlayanlar üçün maraqlı bir seçimdir. Fraga az platforması isə, ən yaxşı canlı kazino oyunlarını təqdim edərək, oyunçulara real vaxtda oyun təcrübəsi yaşatmaq üçün çalışır.

Canlı Ruletin Növləri

Canlı rulet, canlı kazinoların ən məşhur oyunlarından biridir. Ruletin müxtəlif növləri mövcuddur, məsələn, Avropa ruleti, Amerika ruleti və Fransız ruleti. Hər növün özünə xas xüsusiyyətləri və uduş şansları vardır. Avropa ruleti, Amerika ruletinə nisbətən daha yaxşı uduş şansları təqdim edir, çünki bu növ ruletdə yalnız bir sıfır mövcuddur. Fransız ruleti isə, “La Partage” və “En Prison” kimi əlavə qaydalar sayəsində oyunçulara daha çox uduş imkanı verir. Fraga az platforması isə, canlı ruletin müxtəlif növlərini təqdim edərək, oyunçuların zövqünə uyğun bir seçim etməsinə imkan verir.

Canlı Blackjack: Strategiya və Bacarıq

Canlı blackjack, canlı kazinoların digər məşhur oyunlarından biridir. Blackjack, həm şans, həm də strategiya oyunudur. Oyunçular dilerə qarşı oynayır və 21-ə yaxın bir ədədi əldə etməyə çalışırlar. Blackjackdə uduş şansını artırmaq üçün bəzi strategiyalardan istifadə etmək olar. Məsələn, “basic strategy” adlandırılan strategiya, oyunçulara hansı kartı almalı və ya dayandırmalı olduğunu göstərir. Fraga az platforması isə, canlı blackjack oyunlarında oyunçulara ən yaxşı təcrübəni yaşatmaq üçün çalışır.

Mövcud Bonuslar və Promosiyalar

Onlayn kazinolar, oyunçularını cəlb etmək və onların sadəqətini qorumaq üçün müxtəlif bonuslar və promosiyalar təqdim edir. Bu bonuslar, yeni oyunçular üçün xoş gəlmə bonusları, depozit bonusları, pulsuz fırlanmalar, cashback bonusları və s. kimi ola bilər. Bonuslar oyunçulara daha çox oyun oynamaq imkanı verir və uduş şanslarını artırır. Lakin, bonusları istifadə etməzdən əvvəl, onların şərtlərini və qaydalarını diqqətlə oxumaq vacibdir. Fraga az platforması isə, oyunçularına müxtəlif bonuslar və promosiyalar təqdim edərək, onların oyun təcrübəsini daha da zənginləşdirir.

  1. Xoş gəlmə bonusu: Yeni oyunçular üçün ilk depozitə verilən bonus.
  2. Depozit bonusu: Depozitə görə verilən bonus.
  3. Pulsuz fırlanmalar: Slot oyunlarında istifadə edilə bilən pulsuz fırlanmalar.
  4. Cashback bonusu: Məğlubiyyətə görə geri ödənilən bonus.
Bonus Növləri Şərtlər
Xoş gəlmə bonusu Minimum depozit, müəyyən oyunlarda istifadə
Depozit bonusu Depozit məbləği, müəyyən şərtlər
Pulsuz fırlanmalar Müəyyən slot oyunları, uduşun şərtləri

Onlayn kazinolar dünyası sürətlə inkişaf edir və yeni imkanlar yaradır. Məhz bu səbəbdən, oyunçuların bu sahədəki yeniliklərdən xəbərdar olması vacibdir. Təhlükəsizliyi və etibarlılığı ön planda saxlayan platformaları seçmək, uduş şansını artırmaq və oyun təcrübəsindən maksimum fayda əldə etmək üçün mühüm bir addımdır. Hər zaman məsuliyyətli oyun oynayın və oyunları əyləncə məqsədilə qəbul edin.