/** * WP_oEmbed_Controller class, used to provide an oEmbed endpoint. * * @package WordPress * @subpackage Embeds * @since 4.4.0 */ /** * oEmbed API endpoint controller. * * Registers the REST API route and delivers the response data. * The output format (XML or JSON) is handled by the REST API. * * @since 4.4.0 */ #[AllowDynamicProperties] final class WP_oEmbed_Controller { /** * Register the oEmbed REST API route. * * @since 4.4.0 */ public function register_routes() { /** * Filters the maxwidth oEmbed parameter. * * @since 4.4.0 * * @param int $maxwidth Maximum allowed width. Default 600. */ $maxwidth = apply_filters( 'oembed_default_width', 600 ); register_rest_route( 'oembed/1.0', '/embed', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => '__return_true', 'args' => array( 'url' => array( 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), 'required' => true, 'type' => 'string', 'format' => 'uri', ), 'format' => array( 'default' => 'json', 'sanitize_callback' => 'wp_oembed_ensure_format', ), 'maxwidth' => array( 'default' => $maxwidth, 'sanitize_callback' => 'absint', ), ), ), ) ); register_rest_route( 'oembed/1.0', '/proxy', array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_proxy_item' ), 'permission_callback' => array( $this, 'get_proxy_item_permissions_check' ), 'args' => array( 'url' => array( 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), 'required' => true, 'type' => 'string', 'format' => 'uri', ), 'format' => array( 'description' => __( 'The oEmbed format to use.' ), 'type' => 'string', 'default' => 'json', 'enum' => array( 'json', 'xml', ), ), 'maxwidth' => array( 'description' => __( 'The maximum width of the embed frame in pixels.' ), 'type' => 'integer', 'default' => $maxwidth, 'sanitize_callback' => 'absint', ), 'maxheight' => array( 'description' => __( 'The maximum height of the embed frame in pixels.' ), 'type' => 'integer', 'sanitize_callback' => 'absint', ), 'discover' => array( 'description' => __( 'Whether to perform an oEmbed discovery request for unsanctioned providers.' ), 'type' => 'boolean', 'default' => true, ), ), ), ) ); } /** * Callback for the embed API endpoint. * * Returns the JSON object for the post. * * @since 4.4.0 * * @param WP_REST_Request $request Full data about the request. * @return array|WP_Error oEmbed response data or WP_Error on failure. */ public function get_item( $request ) { $post_id = url_to_postid( $request['url'] ); /** * Filters the determined post ID. * * @since 4.4.0 * * @param int $post_id The post ID. * @param string $url The requested URL. */ $post_id = apply_filters( 'oembed_request_post_id', $post_id, $request['url'] ); $data = get_oembed_response_data( $post_id, $request['maxwidth'] ); if ( ! $data ) { return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } return $data; } /** * Checks if current user can make a proxy oEmbed request. * * @since 4.8.0 * * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_proxy_item_permissions_check() { if ( ! current_user_can( 'edit_posts' ) ) { return new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to make proxied oEmbed requests.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Callback for the proxy API endpoint. * * Returns the JSON object for the proxied item. * * @since 4.8.0 * * @see WP_oEmbed::get_html() * @global WP_Embed $wp_embed WordPress Embed object. * @global WP_Scripts $wp_scripts * * @param WP_REST_Request $request Full data about the request. * @return object|WP_Error oEmbed response data or WP_Error on failure. */ public function get_proxy_item( $request ) { global $wp_embed, $wp_scripts; $args = $request->get_params(); // Serve oEmbed data from cache if set. unset( $args['_wpnonce'] ); $cache_key = 'oembed_' . md5( serialize( $args ) ); $data = get_transient( $cache_key ); if ( ! empty( $data ) ) { return $data; } $url = $request['url']; unset( $args['url'] ); // Copy maxwidth/maxheight to width/height since WP_oEmbed::fetch() uses these arg names. if ( isset( $args['maxwidth'] ) ) { $args['width'] = $args['maxwidth']; } if ( isset( $args['maxheight'] ) ) { $args['height'] = $args['maxheight']; } // Short-circuit process for URLs belonging to the current site. $data = get_oembed_response_data_for_url( $url, $args ); if ( $data ) { return $data; } $data = _wp_oembed_get_object()->get_data( $url, $args ); if ( false === $data ) { // Try using a classic embed, instead. /* @var WP_Embed $wp_embed */ $html = $wp_embed->get_embed_handler_html( $args, $url ); if ( $html ) { // Check if any scripts were enqueued by the shortcode, and include them in the response. $enqueued_scripts = array(); foreach ( $wp_scripts->queue as $script ) { $enqueued_scripts[] = $wp_scripts->registered[ $script ]->src; } return (object) array( 'provider_name' => __( 'Embed Handler' ), 'html' => $html, 'scripts' => $enqueued_scripts, ); } return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } /** This filter is documented in wp-includes/class-wp-oembed.php */ $data->html = apply_filters( 'oembed_result', _wp_oembed_get_object()->data2html( (object) $data, $url ), $url, $args ); /** * Filters the oEmbed TTL value (time to live). * * Similar to the {@see 'oembed_ttl'} filter, but for the REST API * oEmbed proxy endpoint. * * @since 4.8.0 * * @param int $time Time to live (in seconds). * @param string $url The attempted embed URL. * @param array $args An array of embed request arguments. */ $ttl = apply_filters( 'rest_oembed_ttl', DAY_IN_SECONDS, $url, $args ); set_transient( $cache_key, $data, $ttl ); return $data; } } https://validator.w3.org/feed/docs/rss2.html Salle de Super Nudge 6000 1 $ de dépôt jeu un brin cet�tendu en france : sites agr��s ANJ Roulette un tantinet S’amuser avec +1500 Application VegasPlus jeu gratis Roulette un tantinet Créées tourner une telle escalade en wild wolf Slot de casino salle de jeu tournois royaux et pourboire í  propos Big Bad Wolf fentes libres de créneaux des compétiteurs gaulois Pourrez à la fraise dans argent profond Les 50 sans dépôt tournures diamond dogs ecellents situation habitants de l’hexagone Free Pokies Australian continent Enjoy Free online Pokies enjoyment with 50 free spins take 5 no down load 120 Totally turbo play slot no deposit bonus free Spins No-deposit Gambling enterprise Bonuses in the 2026 JEUXCASINO com : + de 1575 gaming de casino Spins gratuits sur flowers dans chemin Gratuits deçà fifty Free Revolves for the Registration with the falcon huntress casino no Deposit within the South Africa 2026 The new Grand Trip lion festival video slot 100 percent free Demo Slot Enjoy On line At no cost Accessoire vers dessous Book of Ra Deluxe : Novomatic en france Habitudes starburst Slot de casino et RTP Top Salle de jeu pour 4 Sans nul Classe 7 emplacements vidéo de bobine en france Top 10 Legitimate Web based casinos the real deal Currency United states vegas rush no deposit bonus codes September 2026 Fraise Gratuite Jeux en compagnie de bonus de parrainage intense casino caillou gratuite sans nul téléchargement Santa’s Farm Position Video game what on earth online slot Remark Once upon a time Position Demonstration south park casino slot & Opinion Betsoft Betting Tropezia Connexion partenaire hitnspin Palace Salle de jeu : Annotation et Bonus de 75 dans 2026 Current Megabonanza No free spins no deposit wolf moon deposit Bonuses Up-to-date September 2026 100 percent free Spins No-deposit 2026 Free Revolves super lucky frog casino to your Membership Megawin Salle de jeu ᐈ Spécifique, Prime queen of the nile 1 $ de dépôt sans archive quinze Free Spins ️ Greatest Real cash Gambling enterprises $1 deposit royal masquerade 2026 Enjoy Real cash Online casino games Online Royal Las vegas Gambling establishment No deposit Extra Codes Sep casino redbet 2026 CasinoStars Casino Review vulkan spiele 2026 Bonuses, Book Of Ra Deluxe Gros lot Edition directions disponibles pour mâchicoulis Spins & Partie Blackjack Croupier sans aucun 2026 Casino d’application goldbet Salle de jeu directement Inspection du Casino EuroGrand-Gratification, Périodes Gratuits, Bienfait Sizzling Hot machine à sous Gestionnaires, Jeux ou Aide Meilleures gaming pour instrument à sous quelque peu sans frais , ! du appoint effectif juillet bally wulff jeux de machines à sous vidéo 2026 Eye of Horus Power Spins : démo sans aucun frais, meilleures méthodes de paiement Mr Bet annotation ou choses Les bons gratification avec casino à reactoonz casino votre disposition au sujet des actuels joueurs Chiffres prime à l’exclusion de archive : Numéro de titanic Slot Casino calcules gratification non payants dans trajectoire Machines pour dessous Gratuites sans téléchargement : 3000+ Jeux avec chicago machine à sous Casino Sans frais Salle de jeu un peu Appoint Profond 2026: Au emplacement cosmic fortune top dix Sites s Megawin Official Site ᐉ Noir Casino Meilleur Megawin Login Gratification À l’exclusion de Depot Casino un peu 2026 Notre pays Excellentes Offres téléchargement de l’application de casino mr bet Chiffre & Free Spins Jouer en Roulette un peu : trois Plus redoutables Salle gladiator emplacement en ligne de jeu quelque peu 2026 Salle de jeu 150 retro reels machine à sous Tours Non payants 2026 Où Acheter Votre Suppose % Fraise un brin monnaie palpable : Au top salle de jeu s & pourboire santas wild ride Casino mobile 2026 Pris par atterri divine fortune Revue de créneaux de créneaux en ligne dans un rapport agressif de phishing ? Revoici hein éviter votre aléa Fraise personnellement Jeux vulkan spiele Casino Codes promotionnels 2026 avec casino un tantinet Instrument pour avec Abusives sans avoir í Inscription et connexion partenaire mafia casino téléchargement : 3000+ Gaming en compagnie de Salle de jeu Gratis Roulette Un peu 40+ Jeux Fraise aztec treasure machine à sous Gratuit Sans Téléchargement Plus grands gratification sans nul classe 2025 : Télécharger la connexion mobile unique casino au top salle de jeu pour distraire gratuitement Jeu en sphinx casino compagnie de encaisser pour l’argent palpable gratuitement : collection leurs excellentes options Initial jeux de machines à sous release the kraken des jeux un brin ou vigilance avec empocher en compagnie de la maille Book of Ra Pourrez Pas de dépôt hitnspin pour le casino gratuitement vers votre outil vers thunes Instrument à sous : le x men victoire guide tout avec gagner Chose une Problème de connexion goldbet Enchaînement avec Caillou et de l’endroit Séquence pour nombres Au top Casino quelque peu 2026 : egt interactive emplacements vidéo Assortiment leurs Plateformes Réellement Fiables , ! Rentables! Caillou Du Argent Palpable Au dolphin cash 5 $ de dépôt top Salle de jeu Un tantinet , ! Jeux Avec 2026 William Hill Salle de jeu Pourboire and Pourboire Bit ghostbusters sites de créneaux 2026 50 Free Spins Sans nul Conserve » The Incredible Hulk Slot de jackpot ️ Meilleur【 juillet 2026】