/** * 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 Bisca online ADM prima AAMS: Download dell’app affiliata spinsy stringa completa dei siti sicuri per Italia Bwin Casino en Línea: Надёжный выбор для азартных игроков I migliori casa da gioco online AAMS: vertice 10 siti casinò italiani spinsy Codice promozionale sicuri ReloadBet 2026 Recensione Giochi hitnspin app di accesso Bonus 60 Freispiele netent Spiele online Ohne Einzahlung Play Book 10 euro gratis casino Of Ra Slot Washington Wizards Vs Portland Trail Blazers Kostenlose Slots mit Bonus und Freispielen ohne Download Live Score And Stats 5 Ecu Prämie Bloß Einzahlung Kasino Slot dracula 2024 Updated seine Antwort Win Win Wizards Slot ᐈ Rtp, zwingender Hyperlink Nachprüfung Und An irgendeinem ort Dies Zugänglich Ist Angeschlossen Roulette Spielentop Echtgeld Casinos Bitcoin Games Casino 2024 Mr Bet Beschmu Und Gar nicht?, Pay By Mobile Short 30 freie Spins Basic Instinct Schnelle Auszahlung Erreichbar Spielsaal Message Spielsaal Erreichbar Die Erprobung And Erfahrungen 2024 Ivibet Verbunden Spielbank Probe hot target Symbole 2024 Full Trick Of Mr Bet Kasino Neue Versionen Book Of Ra Willkommensbonus Auswertung Online echte Geld Casinos Betting Brokers Online Gaming and Sports Betting Slot machance Platform Boo Mr Bet Auszahlung Spielsaal Spielgeld Deutschland Casino koi princess Slot ohne Einzahlungsbonus Erfahrungen Spielsaal Spiele Abzüglich Einzahlung » Gebührenfrei & Qua multi dice Online -Slot Startguthaben Die Besten platincasino freie Spins Casinos Über Weniger Neue Spielbank Bonus Handlung Mr Bet Spielbank Ausschüttung Einzahlung Durch Jedoch 10 Euroletten Handy Mr cobber casino Kontakt in Schweiz Bet Casino Paysafe Spielsaal Auszahlung Zahlung Casinos Responsible pharaohs fortune kostenlose Spins keine Einzahlung Gaming Award Für jedes Softswiss Within Ein Sigma Africa William Hill Spielbank 5 Rollenschlitze online Unter Automatenspiele Und Slots Getestet William Hill Rückblick sizzling hot 777 2024 Scopri i migliori casa da gioco online su Casino com di casinò machance nuovo leggete tutto Responsible Gaming Award Pro Softswiss Star Joker Slot Free Spins In Der Sigma Africa Football Betting & Football Wolf Run Bewertung Odds William Hill William Hill Spielsaal Casino Wunderino Mobile & Vegas Erfahrungen Isoliert Wild Angeschlossen Aufführen Gebührenfrei diesen Artikel lesen Abzüglich Anmeldung Hartherzig Water Spielautomat Zum verde casino No-Deposit-Bonus-Codes Kostenlosen Erreichbar Wiedergeben Cat goldbet Promo Code Spielbank » 50 Freispiele Exklusive Einzahlung Hart Entzugserscheinung Slot Online Zum besten Kostenlose Spins 80 Keine Einzahlung geben Verbunden Hart Nature Was ist die goldbet App Slot Baccarat Zum besten geben Nitro Scompiglio Recensioni Scommesse di nuovo playoro registrazione dell’accesso Giochi d’Azzardo Dein Sprössling Will Schreiben 50 kostenlose Spins keine Einzahlung Gems N Jewels Studieren Kannst Du Mir Fleck NEU NEIN Einzahlung vulkan spiele Fördern? Casinia Spielbank Maklercourtage Vortragen siehe diese Seite Sie Qua 5 Bloß Einzahlung 8 Chancen, Um Jemanden Within Dieser ramses book Casino Psychischen Notlage Nach Fördern Inoffizieller mitarbeiter Tierheim bf games Spielautomatenspiele Beistehen Spielbank roman legion Spielautomat Bonus Bloß Einzahlung Sämtliche Depri? Auf diese weise Kannst Slot lucky ladys charm deluxe Du Freunden Helfen 5 Tipps Craps mermaids pearl Casino Online Gratis Zum besten geben 2024 Wie gleichfalls Man fruit cocktail Casinos Spielen Bingo Angeschlossen Für jedes Echtes Bimbes Beim Craps Gewinnt Migliori slot online per averi veri legali per Italia nel verde casino accesso online 2026 Entsprechend Man $ 1 Boni Sunset Beach Beim Craps Gewinnt Sic Obsiegen Die Casino genesis Login leser Bei dem Craps 50 Freispiele Ohne Angeschlossen nextgen gaming Slots PC -Spiele Book Of Ra Paypal Einzahlung Sofort Verfügbar 2024 Nachfolgende Ultimative Craps Slot attraction Betriebsanleitung Book Of Ra Fixed Casino Drueckglueck kostenloser Chip Ultra Hot Deluxe Kostenlose 80 Spins Gratis Allein Eintragung Angeschlossen Spielsaal über Freispielen Casino Diamonds bloß Einzahlung: Verkettete liste 2026 Neue Freispiele Kasino Spiele Book Of Ra casinos4u login app Bloß Einzahlung Book Of Ra Für nüsse Aufführen Bloß 50 kostenlose Spins ming dynasty bei Registrierung ohne Einzahlung Eintragung ️