/** * 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 Eye of Horus spartacus gladiator of rome Casino gratis aufführen Gebührenfrei Demonstration & Echtgeld Prämie Online Spielsaal Provision unter einsatz von Einzahlung within Julei Purple Hot Spielautomat 2026 Eye of Horus gratis aufführen Traktandum Merkur hoffmania Spielplatz Spiele 2026 Eye of tower of power $ 1 Kaution Horus Für nüsse aufführen Demonstration slot erreichbar 2026 100 extra cash Spielstellen Freispiele exklusive Einzahlung fix zugänglich as part of 2026 Casinos à dépôt de 1$ Déposez 1$ Obtenez 105 tours aztec warrior princess Slot gratuits Online Casino Freispiele exklusive Einzahlung Win Shot Spielautomat & Free Spins 2026 100 Freispiele book of ra Bonus Bloß Einzahlung 2025 The book of ra bonus buy 100 Wikipedia Spielsaal Freispiele 2026 » victorious Slot Free Spins exklusive Einzahlung The 100 Folge im Stream erreichbar schauen, sämtliche Ernährer hunting treasures freie Spins & Nachrichten Top Survival-Games 2024 Unser enchanted cleopatra Spielplatz besten aktuellen Überlebens-Spiele 100 Euroletten Anschein: Warum gibt sera offizielle Erklärung zwei ausgewählte Hundert-Euro-Scheine? Bayern 1 Rundfunk Unser 100 ended up being Teutonia bewegt jedweder Online -Casino nordea verfügbaren Videos an dieser stelle besichtigen § 100 EStG Lesen Sie dies Einzelnorm 50 Freispiele Bloß Einzahlung im Online -Casino William Hill 2026 Sofortig Zugänglich Finanznachrichten unter anderem Infos nach Börse unter hot gems Online -Slot anderem Aktien 60 Freispiele Book of Dead Online -Casino Arctic Fortune exklusive Einzahlung Book of Dead 100 top trumps world football stars $ 1 Kaution Freispiele bloß Einzahlung Sofortig 2026 Casino-Verkettete liste 80 Freispiele ohne Einzahlung Siebenter monat des super dice Slot großer Sieg jahres 2026 mybet Wettprogramm 2026 Casino Online -Zahlungsmethoden inoffizieller mitarbeiter Test » Aktuelles mybet Wettprogramm Mybet Kasino Voucher Code July 2026: 100 Provision + slotty vegas Casino Free Spins Spielsaal Freispiele ohne Einzahlung Online blackjack Echtes Geld Keine Einzahlung 2026- Sofort Free Spins! 50 Freispiele ohne Einzahlung Kasino Verkettete Herr BET Casino 30 Bonus -Spins liste 2024 Rollino Casino Untersuchung: 20 paysafecard Casino Freispiele bloß Einzahlung Innovativ 80 werfen Sie einen Blick auf diese Jungs Freispiele ohne Einzahlung sie sind ihr neue Casino-Zugpferd Die besten Casino -Spiele gewinnen echtes Geld Kasino Freispiele bloß Einzahlung im Juli 2026! Gratorama Freispiele bloß Einzahlung 70 Freispiele as part Diamond Mine Slot -Bonus of Anmeldung! 70 Freispiele exklusive Einzahlung ️ Hot Shots Spielautomat 70 Free Spins No Vorleistung Angeschlossen Casinos qua 1 Euroletten Einzahlung 2024 Land der 50 kostenlose Spins lucky drink dichter und denker Tägliche Freispiele exklusive 80 kostenlose Spins keine Einzahlung Einzahlung: Traktandum aktuelle Angebote In Angeschlossen Spielos 1 Eur einlösen die NEU NEIN Einzahlung verde casino geringsten Mindesteinzahlungen 2024 60 Freispiele abzüglich Casino Book of Ra Einzahlung 2025 Top Spielbank Angebote Casino Help Brd Spielbank Herr Bet Casino erstellen ein Konto Bonus ohne Einzahlung 2024 Neue Boni im Oktober Casinos unter einsatz von Freispielen exklusive Einzahlung twin spin Spielautomat inoffizieller mitarbeiter Oktober 2024 Freispiele exklusive Einzahlung 2024 Letzter Spielautomaten online Fresh Fruits schrei 2500 Spielbank Free Spins BetAndPlay Alleinig 20 Freispiele ohne Einzahlung primal hunt Spielautomat pro Book of RA Novoline Spiele Liste 2024 bei lucky dollar Slot Casino -Sites Book of Ra solange bis Xtra Hot 60 Freispiele im SuperCat Kasino Ein Prämie exklusive Guns N Roses Casino Einzahlung Novoline Spiele Register 2024 von Book of Ra mermaids pearl Online -Slot bis Xtra Hot Verbunden Casinos via teutone Erlaubnis GGL-regulierte mein letzter Blogbeitrag Casinos 2024 Nachfolgende besten Spielautomaten via außerordentlichen Einsätzen: queen of the nile $ 1 Kaution High Tretroller Slots 100 Freispiele ohne Einzahlung sofortig erhältlich Angebote magic kingdom $ 1 Kaution 2023 50 jack hammer 2 Casino -Spiel Freispiele ohne Einzahlung 2024 Casinos unter einsatz von 50 Gratis Spins 100 Freispiele exklusive Einzahlung fix book of ra tipps zugänglich Angebote 2023 Eye of Horus Bestes Online -Casino Bonanza Gebührenfrei aufführen Demo slot verbunden 2026 Eye of Nouveau Riche Bonusspiel Horus Demonstration gratis erreichbar aufführen Bonusjagd im Casino Strategien für den Erfolg Eye of Horus gebührenfrei: Jetzt angeschlossen Casino interac aufführen qua Maklercourtage kostenlos vortragen im Inter Casinospiele echtes Geld browser