/** * 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' ) ), ); } } Užij si napínavé výhry a bonusy s platformou spinmama – tvé oblíbené online kasino. – Chambers Of Vikramaditya

Užij si napínavé výhry a bonusy s platformou spinmama – tvé oblíbené online kasino.

Užij si napínavé výhry a bonusy s platformou spinmama – tvé oblíbené online kasino.

V dnešním dynamickém světě online zábavy je výběr správného kasina klíčový. Hledáte-li platformu, která kombinuje vzrušení z her, širokou nabídku bonusů a spolehlivé prostředí, pak se seznamte s spinmama. Tato platforma se rychle stává oblíbenou volbou pro hráče všech úrovní, a to díky svému intuitivnímu rozhraní a neustálému zlepšování herní nabídky. Nenechte si ujít příležitost zažít online kasino nové generace.

Spinmama je více než jen online kasino; je to komunita a prostor pro vzrušující zážitky. Od klasických automatů po moderní stolní hry, každý si zde najde to své. Platforma nabízí také řadu bonusů a promo akcí, které hráčům umožňují maximalizovat své šance na výhru. Bezpečnost a férovost hry jsou prioritou, a proto je spinmama regulováno a licencováno předními herními autoritami.

Široký výběr her a herních poskytovatelů

Spinmama se pyšní rozmanitou nabídkou her, která uspokojí i ty nejnáročnější hráče. Můžete si vybrat z tisíců her od renomovaných poskytovatelů, jako jsou NetEnt, Microgaming, Play’n GO a další. Nabídka zahrnuje klasické ovocné automaty, moderní video sloty s bonusovými funkcemi, ruletu, blackjack, baccarat a poker. Kromě toho spinmama nabízí live kasino, kde můžete hrát s živými dealery a zažít autentickou atmosféru kamenného kasina.

Pro ty, kteří hledají něco nového a vzrušujícího, spinmama pravidelně přidává nové hry a spolupracuje s inovativními herními studii. Díky tomu máte vždy přístup k nejžhavějším novinkám v herním světě. Navíc spinmama často pořádá turnaje a promo akce, kde můžete vyhrát atraktivní ceny a bonusy.

Kvalita her je zaručena náhodnými generátory čísel (RNG), které zajišťují férovost a transparentnost. Můžete si být jisti, že každá hra je náhodná a že máte stejné šance na výhru, bez ohledu na vaši herní strategii.

Poskytovatel her Typ her Nejoblíbenější tituly
NetEnt Video sloty, stolní hry Starburst, Gonzo’s Quest, Mega Fortune
Microgaming Video sloty, progresivní jackpoty Mega Moolah, Immortal Romance, Game of Thrones
Play’n GO Video sloty, ovocné automaty Book of Dead, Reactoonz, Fire Joker

Atraktivní bonusy a promo akce

Spinmama láká hráče širokou škálou bonusů a promo akcí. Noví hráči mohou využít uvítací bonus, který často zahrnuje bonus k prvnímu vkladu a/nebo roztočení zdarma. Pravidelní hráči pak mohou těžit z dobitých bonusů, cashbacku, věrnostních programů a dalších promo akcí. Důležité je si vždy pozorně přečíst podmínky a pravidla bonusů, abyste věděli, jak je využít co nejefektivněji. Využijte bonusů a prodlužte si zábavu!

Bonusy a promo akce jsou skvělým způsobem, jak maximalizovat své šance na výhru a odměnit se za svou loajalitu k kasinu. Spinmama se snaží pravidelně obměňovat svou nabídku bonusů, aby udržela hráče v napětí a motivovala je k další hře. Nezapomeňte se pravidelně kontrolovat stránku s promo akcemi, abyste nepřišli o žádnou zajímavou nabídku.

Spinmama také často pořádá speciální akce spojené se svátky a událostmi. Můžete tak například vyhrát extra bonusy během Vánoc, Velikonoc nebo v rámci narozeninových oslav. Sledujte sociální sítě a newsletter kasina, abyste byli informováni o všech aktuálních akcích.

  • Uvítací bonus: Bonus pro nové hráče při prvním vkladu.
  • Reload bonus: Bonus za další vklady.
  • Cashback: Vrácení části prohraných peněz.
  • Věrnostní program: Odměny za pravidelnou hru.

Mobilní kasino a aplikace

Spinmama nabízí hráčům možnost hrát své oblíbené hry kdykoli a kdekoli díky svému mobilnímu kasinu. Mobilní kasino je plně optimalizované pro mobilní zařízení, takže se nemusíte obávat žádných problémů s kompatibilitou nebo výkonem. Můžete hrát přímo ve svém mobilním prohlížeči, nebo si stáhnout mobilní aplikaci pro Android nebo iOS. Aplikace nabízí ještě pohodlnější a rychlejší přístup k hrám a bonusům.

Mobilní kasino spinmama nabízí stejný výběr her a bonusů jako desktopová verze. Můžete si tak užívat všech oblíbených automatů, stolních her a live kasina bez ohledu na to, kde se zrovna nacházíte. Navíc mobilní kasino nabízí řadu speciálních funkcí, jako je notifikace o nových bonusech a promo akcích, možnost ukládat si oblíbené hry a rychlý přístup k zákaznické podpoře.

Bezpečnost mobilního kasina je zaručena nejmodernějšími technologiemi šifrování dat. Můžete si být jisti, že vaše osobní a finanční údaje jsou v bezpečí. Mobilní kasino spinmama je skvělou volbou pro všechny, kteří chtějí hrát kasinové hry na cestách.

Způsoby vkladu a výběru

Spinmama nabízí širokou škálu bezpečných a spolehlivých způsobů vkladu a výběru. Můžete využít platební karty, jako jsou Visa a Mastercard, elektronické peněženky, jako jsou Skrill a Neteller, bankovní převody a další populární platební metody. Důležité je si před vkladem nebo výběrem vždy zkontrolovat minimální a maximální limity, a také případné poplatky. Rychlé a bezpečné transakce jsou prioritou!

Vklady jsou obvykle připsány na váš účet okamžitě, zatímco výběry mohou trvat několik pracovních dnů, v závislosti na zvolené platební metodě a ověření vašeho účtu. Spinmama se snaží vyřídit všechny výběry co nejrychleji, ale může se vyskytnout zpoždění v případě, že je potřeba ověřit vaše identitu nebo platební údaje. Vždy se ujistěte, že máte všechny potřebné dokumenty připraveny, abyste urychlili proces ověření.

Spinmama dbá na bezpečnost vašich finančních transakcí a používá nejmodernější technologie šifrování dat. Můžete si být jisti, že vaše platební údaje jsou v bezpečí a že vaše transakce jsou chráněny před podvodem.

  1. Platební karty (Visa, Mastercard)
  2. Elektronické peněženky (Skrill, Neteller)
  3. Bankovní převod
  4. Kryptoměny (Bitcoin, Ethereum)

Zákaznická podpora

Spinmama nabízí prvotřídní zákaznickou podporu, která je k dispozici 24 hodin denně, 7 dní v týdnu. Můžete kontaktovat zákaznickou podporu prostřednictvím živého chatu, e-mailu nebo telefonicky. Zákaznická podpora je k dispozici v několika jazycích a je tvořena zkušenými a kvalifikovanými operátory, kteří vám rádi pomohou s jakýmkoli problémem nebo dotazem. Spolehlivá podpora je důležitá!

Zákaznická podpora spinmama je známá svou rychlou a efektivní odezvou. Operátoři jsou schopni vyřešit většinu problémů v krátkém čase a poskytnout vám jasné a srozumitelné odpovědi na vaše otázky. Pokud máte nějaké technické potíže, můžete se obrátit na technickou podporu, která vám pomůže s řešením problémů. Spinmama se snaží poskytovat svým hráčům co nejlepší zákaznickou podporu, aby si mohli užívat bezproblémovou herní zkušenost.

Kromě zákaznické podpory nabízí spinmama také obsáhlou sekci s často kladenými otázkami (FAQ), kde najdete odpovědi na nejčastější dotazy a problémy. Tato sekce je skvělým zdrojem informací pro nové hráče, kteří se s platformou teprve seznamují. Zaměstnanci kasina se neustále snaží zlepšovat kvalitu a uživatelsky přívětivost všech služeb poskytovaných hráčům.

Kanál podpory Dostupnost Jazyky
Živý chat 24/7 Čeština, angličtina, němčina
E-mail 24/7 Čeština, angličtina, němčina
Telefon Omezená dostupnost Angličtina