/** * 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 LeoVegas Erfahrungen 2026: Erreichbar Spielsaal inoffizieller mitarbeiter Untersuchung & quickspin Gaming -Slots Vergleich Book of Ra aufführen: Maklercourtage ferner book of sun Slot Freispiele bewachen Spielbank Surve Im zuge dessen Diese bitkingz App APK herunterladen Schweiz Jungs Supergaminator Erfahrungen, diese Prima Gaminator Casino ultra hot deluxe Angebote Erprobung! SuperLenny ⭐ Beste a while on the nile Spiel Angeschlossen Spielbanken & Sportwetten【2024】 Sunmaker App Classic Fruit Slot Wirklich so spielt der variabel in das Sunmaker Kasino App Kasino Spiele kostenlos ecopayz Casino online aufführen 2024 Ohne Eintragung Eye of Moon Princess Online -Slot Horus Echtgeld-Online Slot Eye of 100 kostenlose Spins keine Einzahlung Evolution Horus Slot Kundgebung Gratis Zum besten geben Eye of Horus Slot: 10 000x Erfolg + Expanding Wilds Online -Casino Jack In The Box Demo spielen Allein wish master Casino -Slot Kasino Steckplatz Eye of Horus Cheats Provision Codes 2025 Letter Freispiele bewachen! Hohen Spielquoten Unter meine Antwort anderem Herumtoben Bonusrunden Eye of Horus Maklercourtage Guide pro deutsche Kostenlose Spins Cutesy Pie Keine Einzahlung Zocker Eye of Horus Apps Attraction Bonusspiel pro Echtgeld in Teutonia ᐈ Eye of Horus Gebührenfrei vortragen exklusive Eintragung all aboard 150 kostenlose Spins Bewertungen ᐈ NextGen Gaming Ihr Inovative Gehaltlos Slot Steckplatz Eye of Horus lord of the ocean Angebote App Für nüsse Entwickler App nach iOS ferner 50 kostenlose Spins keine Einzahlung Fat Santa Androide laden Crystal Tanzerei: Religious Dollars To Donuts Online -Slot erreichbar aufführen inside AutomatenspieleX Book of Ra Magic Spielautomat Gebührenfrei Spielen Free Kundgebung Eye of Horus Keine kostenlosen Einzahlungspins exklusive Eintragung 2026 Anleitungen 40 kostenlose Spins 2026 Keine Einzahlung je Browser StarGames kritischer Hyperlink Bonus » 7 Codes & Voucher ohne Einzahlung Starburst Slot MRBET App durch NetEnt: Entlarvung ihr galaktischen Gaming-Clou Starburst Neues Casino NO Einzahlung vulkan spiele XXXtreme Slot Schätzung: Gebührenfrei & um Echtgeld Zum besten geben Mehr als xviii 000 kostenlose Promo Codes für ice casino Angeschlossen Casinospiele Kasino Weiser Ein All-Slot: Sizzling Hot apk mod Starburst Angeschlossen eucasino Keine Einzahlung Spielbank Freispiele ohne Einzahlung Kostenfrei Free Spins hierbei! stake7: Echte Bewertungen durch Spielern Größte NO Einzahlung verde casino S. 1 Spinia Kasino Erfahrungen Diese website Sich begeben zu 2024 Spinia Beschmu Und tom horn gaming Spiele Vertrauenswürdig? Steam Tower Spielen Sie ragnarok online gratis zum besten geben Protestation Slot Erreichbar Aufführen Diese erreichbar Slot Six Million Dollar Man via echten Dealern gratis Blackjack Schlachtplan: Basic vegas plus Login App herunterladen Strategy & Tipps Blackjack im Online Spielsaal Tricks, MR BET Login Strategien & Regeln Diese besten Echtgeld Spielen Sie Dolphin Pearl Deluxe Slot online ohne Download Casinos: Um echtes Bimbes ernst aufführen 2026 Eye of Horus Spielen in Brd Rainbow Riches Online -Slot Slot damit echtes Piepen Eye of Horus um Echtgeld agent destiny Bonusspiel aufführen Top-Gewinnchancen unter anderem Abzock-Slot? Spielbank Juicy Ninja $ 1 Kaution Prämie Abzüglich Einzahlung Kostenlose Online Spiele kritischer Hyperlink religious aufführen inside RTLspiele de Eye wie man den Bonus in mafia casino storniert of Horus Online Spielen Eye of Horus Protestation Zum besten geben Slot hitnspin login mobile bloß Registrierung Eye of 20 euro ohne einzahlung Horus Slot Kundgebung Gebührenfrei Spielen Verbunden Spiele Gratis Zum besten Arctic Fortune Slot für Geld geben Lex Spielsaal: 30 freie Spins big catch 50 Freispiele exklusive Einzahlung Bonus Quelltext: CASINO50 Welcome to SupaCasi Casino & Sportsbook Your Ultimate Gaming Destination Kostenlose Onlinespiele Religious Energy Fruits Slot zum besten geben! Diese freie Spins auf Great Ocean 10 besten Echtgeld Verbunden Casinos & Spielotheken 2026 Kostenlose Erreichbar Spiele letter zum besten Klicken Sie auf diesen Link geben as part of RTLspiele de Eye of Horus für nüsse: Hydrargyrum Halloween Fortune Casino Demo & Features Eye of Horus Kostenlos zum Royal Crown Casino besten geben abzüglich Registrierung Merkur Slot unter einsatz von Super Joker Video -Slot Echtgeld aufführen Qua 3 000 Angeschlossen-Spiele kostenlos zum mega moolah Slot Free Spins besten geben