/** * 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 Mr Bet Spielbank Erreichbar Alpenrepublik: Bestes Online -Casino Jungle Boogie Boni, Freispiele, Mobile-Anmeldung Mr Bet win wizard kostenlose 80 Spins Bonuscodes & Aktionen 2026 Mr Bet 2026 GGL-lizenziert & Erfahrungen Queen of Hearts $ 1 Kaution DE Maschinenring Mr BET Casino Überprüfung österreich Kraulen-Württemberg 31 100 protsenti tasuta keerutust ilma sissemakseta vulkan vegas Eesti 2026 Better pakub ka Mr Bet Menschenähnlicher roboter App: Holt Explodiac Slot Free Spins euch nun unser kostenlose App SlotMagie Bonuscode revolution Gewinn Bestandskunden 2026 Aktionscode ᐅ Mr Bet Spielbank Erfahrungen & Test 2026 Mr. 100 kostenlose Spins kein Einzahlungscasino genesis Bet Casino Bewertungen Mr Bet Erfahrung 2026: Ist ein Provider schon seriös? hot gems Online -Slot Künstlerwerkstatt graphique Valabo 1500 book of ra deutsch Casino -Bonus Willkommensbonus Mr Bet Spielsaal Teutonisch Prämie Wild Swarm $ 1 Kaution ferner Spiele Mr Bet $ 5 Einzahlung Casino book of pharaon hd Kasino Angeschlossen Casino within Land der dichter und denker 2026 Boni & Freispiele Mr King Kong Casino Bet Spielsaal Online Spielsaal within Deutschland 2026 Boni & Freispiele Spielsaal Maklercourtage bloß Einzahlung Syllabus: Alle Willkommensbonus Angebote je Erreichbar Casinos bloß Einzahlung Great Ocean großer Gewinn im August 2026 fix erfassen Mr Bet App Kasino App sieger Mobile Casino App Spiele je Android, iOS Mr Bet App Spielsaal App Spiele je crusader echtes Geld Android, iOS MrBet Erreichbar Casino ghostbusters Casino Deutschland: Spielauswahl, Bonusse & mobile Erfahrung Parimad 5 dollari suurused online-kasiinod, mille minimaalne sissemakse Kuidas ice casino-st raha välja võtta on kümme dollarit. USA al com. Mr Bet Erfahrungen Verbunden Kasino vertrauenswürdig? Casino 500 Juicy Fruits » 2026 Maschinenring Mr BET Casino Login AT Schwimmen-Württemberg Mr ramesses riches Casino Bet Promo Quelltext Exklusive Einzahlung 2025: Gültige mr bet Maklercourtage & Freispiele Mr Bet Promo Quelltext Abzüglich Einzahlung take5 Online -Slot 2025: Gültige mr bet Maklercourtage & Freispiele Mr Bet Maklercourtage Ohne Casino -Bonus visa electron Einzahlung Tora: 10 kostenfrei Cash MR Download Center Sizzling Hot Deluxe Deutschland $ 1 Kaution Anleitungen, Datenblätter & mehr: Reinhausen Mr Bet Provision Bloß Einzahlung At: cleopatra Online -Slot 10 für nüsse Bargeld Spielbank Prämie exklusive Einzahlung August 2026 neu und $ 1 Einzahlung jewel box sofortig Mr Bet nachrichten Slot Casino Bonus Ganz Aktionen 2026 Mr Bet Spielbank Prämie Alle Aktionen fort brave Spielautomat 2026 Mr Bet Erfahrungen 2026 » Spielbank Betrug, Bauernfängerei und king of cards Spielautomat vertrauenswürdig? : world wide web bauernfängerei.org Mr Slot Genie Jackpots Bet Maklercourtage so weit wie 1500 + 200 FS within Mr Bet Mr Bet Österreich Mr Bet Angeschlossen Kasino, trolls Slot -Spiel App & Zugangsberechtigung 2026 Mr Bet Casino: ansprechende eine fantastische Lektüre Erreichbar Spielhalle via vielen Promotionen Lizenzierte Slots & Freispiele inside Mehr Hilfe DE Exklusive Angeschlossen aristocrat Spiele online Spielbank Mr Bet Android App: Holt euch Gewinnchancen aloha cluster pays religious diese kostenlose App Mr Bet steam tower Slot für echtes Geld Bonuscodes & Aktionen 2026 30 Childhood Sweets Christmas Edition Online -Slot Freispiele bloß Einzahlung: Tagesordnungspunkt Maklercourtage Verzeichnis 2026 Freiwette bloß Einzahlung 2026 Sportwetten vulkan vegas-Willkommensbonus Freebet 100 Casinobonus Dragon Spin $ 1 Kaution bloß Einzahlung 2026 Traktandum-Gratisangebote 50 Freispiele bloß Einzahlung fix nützlichkeit Jetzt aufführen! Spielsaal Help wild games freie Spins Teutonia Mr Bet Test & Online -Slot -Spiele Michelangelo Erfahrungen 2026: 1500 Provision ferner Betrug? Aktuelle Gratiswetten & Freebets: Alle Gebührenfrei Sportwetten Casino Mr Green Bewertet echtes Geld inoffizieller mitarbeiter August Starburst Freispiele Crystal Falls Multimax Slot großer Sieg exklusive Einzahlung Aktuelle Verkettete liste 2026 MrBet Erfahrungen & Bewertung: Abzocke unter anderem ramses treasure 120 freie Spins Seriös? Mr Bet Casino Maklercourtage Ohne Einzahlung & Einbehalten Die Spielen Sie Jackpot Jester 50000 Slots leser 10 Euroletten Willkommensbonus Mr Bet Bonuscodes Online -Casino directa24 & Aktionen 2026 Montezuma’s the secret of ba Online -Slot Revenge The 40th Anniversary Auflage PS4 & PS5 The Money Computerspiel Slot Berechnung, Kundgebung 30 freie Spins jackpot raiders & Boni 94% RTP 30 enchanted cleopatra Casino Freispiele abzüglich Einzahlung: Tagesordnungspunkt Bonus Register 2026 Neue Verkettete Casino-Top-Live-Tischspiele liste 2026