/** * 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' ) ), ); } } Oltre 700 opportunità di vincita ti aspettano su playjonny casino, il portale che trasforma ogni sco – Chambers Of Vikramaditya

Oltre 700 opportunità di vincita ti aspettano su playjonny casino, il portale che trasforma ogni sco

Oltre 700 opportunità di vincita ti aspettano su playjonny casino, il portale che trasforma ogni scommessa in pura adrenalina e divertimento senza limiti.

Benvenuti nel mondo entusiasmante di casino playjonny, la piattaforma online che rivoluziona l’esperienza di gioco. Con oltre 700 opportunità di vincita a portata di click, playjonny casino si distingue per la sua interfaccia intuitiva, la vasta selezione di giochi e le promozioni allettanti. Che siate giocatori esperti o principianti, preparatevi a scoprire un universo di divertimento e adrenalina, dove ogni scommessa può trasformarsi in una grande emozione.

Un Universo di Giochi a Portata di Mano

La varietà è l’anima del divertimento, e playjonny casino lo dimostra offrendo una gamma incredibilmente ampia di giochi. Dalle classiche slot machine, con i loro simboli colorati e le funzionalità bonus, ai giochi da tavolo più tradizionali come il blackjack, la roulette e il baccarat, ogni giocatore può trovare il suo gioco preferito. Inoltre, la piattaforma propone una sezione dedicata al casinò live, dove è possibile interagire con croupier in diretta streaming e vivere un’esperienza di gioco coinvolgente e realistica. L’accesso è semplice e sicuro, garantendo un ambiente di gioco protetto e affidabile. L’innovazione costante permette a playjonny casino di proporre regolarmente nuove ed entusiasmanti opzioni di gioco.

Ecco una tabella che illustra alcuni dei giochi più popolari offerti da playjonny casino:

Gioco
Tipologia
RTP (Return to Player)
Starburst Slot Machine 96.09%
Blackjack Classic Gioco da Tavolo 99.59%
Roulette Europea Gioco da Tavolo 97.30%
Mega Moolah Slot Machine (Jackpot) 88.12%

Bonus e Promozioni: Sperimenta il Vantaggio Playjonny

playjonny casino si distingue per la generosità delle sue offerte promozionali. Il bonus di benvenuto è solo l’inizio: i giocatori possono usufruire di bonus di deposito, cashback, giri gratuiti e partecipare a tornei e competizioni con premi in denaro. L’obiettivo è quello di premiare la fedeltà dei giocatori e incentivare la loro passione per il gioco d’azzardo. Le promozioni sono frequentemente aggiornate, garantendo sempre nuove opportunità di vincita. È importante leggere attentamente i termini e le condizioni di ogni offerta per comprendere appieno i requisiti di puntata e le restrizioni applicabili.

Sicurezza e Affidabilità: Gioca in un Ambiente Protetto

La sicurezza dei giocatori è una priorità assoluta per playjonny casino. La piattaforma utilizza sistemi di crittografia all’avanguardia per proteggere i dati personali e finanziari degli utenti. Il sito è autorizzato da autorità competenti, il che garantisce il rispetto di standard elevati di trasparenza e correttezza. Inoltre, playjonny casino promuove il gioco responsabile, offrendo strumenti e risorse per aiutare i giocatori a gestire il proprio budget e a evitare problemi di dipendenza. Il servizio clienti è disponibile 24 ore su 24, 7 giorni su 7, per rispondere a qualsiasi domanda o dubbio.

Metodi di Pagamento Flessibili e Convenienti

Offrire un’ampia gamma di metodi di pagamento è fondamentale per garantire la comodità dei giocatori. playjonny casino accetta carte di credito e debito (Visa, Mastercard), portafogli elettronici (PayPal, Skrill, Neteller) e bonifici bancari. I prelievi sono rapidi e sicuri, con tempi di elaborazione minimi. La piattaforma utilizza protocolli di sicurezza avanzati per garantire che tutte le transazioni siano protette da frodi e accessi non autorizzati. In questo modo, i giocatori possono concentrarsi esclusivamente sul divertimento, senza preoccupazioni riguardo alla sicurezza dei propri fondi.

Ecco una lista dei principali metodi di pagamento accettati da playjonny casino:

  • Carte di Credito (Visa, Mastercard)
  • Portafogli Elettronici (PayPal, Skrill, Neteller)
  • Bonifico Bancario
  • Carte Prepagate

L’Esperienza Mobile: Gioca Ovunque e in Qualsiasi Momento

Nell’era digitale, la possibilità di giocare in mobilità è diventata essenziale. playjonny casino offre un’esperienza di gioco ottimizzata per dispositivi mobili, attraverso un sito web responsive o un’app dedicata. In questo modo, i giocatori possono accedere ai loro giochi preferiti ovunque si trovino, che si tratti di essere in viaggio, a casa o in pausa dal lavoro. L’interfaccia è intuitiva e facile da usare, garantendo un’esperienza di gioco fluida e senza interruzioni. La compatibilità con diversi sistemi operativi (iOS, Android) rende la piattaforma accessibile a un vasto pubblico di utenti.

Il Supporto Clienti: Sempre al Tuo Fianco

Un servizio clienti efficiente e disponibile è un elemento fondamentale per garantire la soddisfazione dei giocatori. playjonny casino offre un supporto clienti 24 ore su 24, 7 giorni su 7, attraverso diversi canali: chat live, email e telefono. Gli operatori sono competenti, cordiali e pronti a risolvere qualsiasi problema o dubbio. Il team di supporto è multilingue, il che permette di assistere i giocatori in diverse lingue. La disponibilità costante e la qualità del servizio clienti contribuiscono a creare un ambiente di gioco accogliente e rassicurante.

Considera i seguenti aspetti quando scegli un casinò online:

  1. Licenza e Regolamentazione
  2. Selezione di Giochi
  3. Bonus e Promozioni
  4. Metodi di Pagamento
  5. Assistenza Clienti
  6. Sicurezza e Protezione dei Dati

Oltre il Gioco: La Community di Playjonny

playjonny casino non è solo una piattaforma di gioco, ma anche una vera e propria community. I giocatori possono interagire tra loro attraverso forum di discussione, chat live e canali social media. Questo permette di condividere esperienze, consigli e strategie di gioco. L’atmosfera amichevole e coinvolgente contribuisce a rendere l’esperienza di gioco ancora più divertente e gratificante. playjonny casino organizza regolarmente eventi e concorsi a premi per incentivare la partecipazione della community e premiare la fedeltà dei giocatori.

Caratteristica
Descrizione
Giochi Disponibili Oltre 700 titoli di slot, giochi da tavolo e casinò live.
Bonus di Benvenuto Bonus fino a 1000€ + 50 giri gratuiti.
Metodi di Pagamento Carte di credito, portafogli elettronici, bonifici bancari.
Assistenza Clienti 24/7 via chat live, email e telefono.

Leave a Comment

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