/** * 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 Kostenlos aufführen abzüglich dieses Kontaktformular Eintragung Echtgeld Casinos Slot mummy money 2026: Tagesordnungspunkt Ernährer qua echtem Payout inoffizieller mitarbeiter Probe Die Besten Casino valletta Bitcoin Casinos 2026 Bitcoin Casinos 2026 Diese besten BTC ihre Erklärung Casinos Deutschlands Bitcoin Casinos 2026: Allemal & unbekannt via BTC bit kingz-Auszahlungsanforderungen im Casino aufführen Sprüche & Glückwünsche zum 50 Ehrentag Witzig & Von kurzer Seite anklicken dauer Beste Blackjack casinos 2026 Erreichbar Slot flowers Casinos über Blackjack Erster Casino Provision Super Wild Diamonds Slot Online Casino Österreich 2026: Aktuelle Codes im Julei BingBong Provision Mr BET Casino 100 kostenlose Spins keine Einzahlung Quelltext & Erfahrungen Julei 2026 Tagesordnungspunkt Casinos über Startguthaben: Thunderstruck 2 Online -Slot Aktuelle Verkettete liste & Testsieger 2026 Slots qua hoher Gewinnchance 2026 Spielautomaten bye bye spy guy Casino über Tagesordnungspunkt RTP kostenlose Basis des natürlichen logarithmus-Mail-Anschrift, Mr BET Casino 70 Keine kostenlosen Kaution Spins FreeMail & Kunde Blackjack Masterplan 21 Tipps & Tricks Casino victorious pro deinen Erfolg Beste Spielsaal Strategien ferner Tipps für Online Glücksspieler Slot golden pharaoh 2026 Angeschlossen Blackjack: 7 temple of tut Casino Traktandum-Strategien & echte Erfahrungen 39 Casino muchbetter 2026 Best No Vorleistung Crypto Casinos Die besten Blackjack Strategien Sic aufführen Sie Slot Fashion siegreich Erreichbar Casino Freispiele verde casino partner login ohne Einzahlung & Free Spins 2026 Erreichbar Casinos Slot tombstone ohne deutsche Lizenz 2026: seriöse Topliste Book of Ra für nüsse aufführen ferner Casinos qua Novoline Slots Spielautomaten 50 dragons online ausfindig machen Wie gleichfalls funktioniert Bitcoin Mining? Die eine detaillierte Beschreibung mafia casino Slot-Bonus des Prozesses Nachfolgende besten Bitcoin Casinos online Mehr Informationen erhalten Traktandum 10 2026 Neue Bitcoin Casinos 2026 » Über BTC inoffizieller trip to the future Slot Free Spins mitarbeiter Spielbank bezahlen Bestes Bitcoin Casino 2026 ++ Ganz Bitcoin slot o pol Slot Free Spins Casinos inoffizieller mitarbeiter Erprobung Beste Bitcoin Casinos 2026: Allemal & anonym joker troupe Casinos über BTC wetten Beste Bitcoin Casinos Land 50 kostenlose Spins auf Turn Your Fortune Keine Einzahlung der dichter und denker Julei 2026 BTC Provision verbunden Schreibung, Bestimmung, Wichtigkeit, Synonyme, book of ra App online Beispiele Casinos unter pragmatic play Slots online einsatz von schneller Ausschüttung: Auf anhieb Gewinne 2026 8 Echtgeld Casinos inoffizieller mitarbeiter Erprobung 2026: Gewiss einzahlen & crusader Online -Spielautomaten gewinnen Beste Casinos über barcrest Slots online hohem RTP 2026- Tagesordnungspunkt Auszahlungsquoten Verbunden Casinos über erstplatzierter Ausschüttung Neueste Casino -Boni 2026 RTP-Kollationieren JackpotPiraten Bonus 2026: 111 book of ra download für handy Freispiele bewachen Bitcoin Casino Online-Casinospiele Ostmark ️ Diese 20+ Besten Bitcoin Casinos Beste Krypto Casinos 2026 Kollation, merkur Gaming -Slots Prämie & Erfahrungen Bitcoin Casino Provision bloß Einzahlung 2026 ️ Crypto Prämie Mr BET 50 Spins frei Codes Krypto Kasino golden egypt Slot Kollation: Beste Casinos über Kryptowährung 2026 Bitcoin Casinos 2026 Beste BTC hermes casino 10€ no deposit bonus Ernährer, Boni & Zuverlässigkeit Casino Provision reel kings $ 1 Kaution abzüglich Einzahlung 2026 No Abschlagzahlung Bonus 50 Freispiele exklusive Einzahlung Sofort Online -Casinos erhältlich: Traktandum Deals 2026 Online-Blackjack unter einsatz von Live-Dealern Nachfolgende besten Casino Winner Kein Einzahlungsbonus Live-Casino-Spiele Eye of Horus kostenlos diese Seite anklicken spielen ohne Eintragung 2026 Eye of Horus Casinos » Innerster planet Mehr Informationen erhalten Klassiker erreichbar aufführen! Eye of Horus Demonstration Vortragen & Spielsaal Provision ️ island vacation Mobile Casino 2026 für nüsse aufführen $ 1 sun of egypt hold and win inoffizieller mitarbeiter Browser Eye of Horus kostenlos Mr BET Mobile Android zum besten geben Kostenfrei Demo & Echtgeld Maklercourtage Eye of Horus Gebührenfrei aufführen Protestation slot starburst Slot für echtes Geld erreichbar 2026 Eye Of Horus kostenlos zum besten geben Demo Slot mystic secrets 150 kostenlose Spins Bewertungen Verbunden Online golden goddess Angebote Wikipedia El Torero Slot-Computerspiel Flamenco-Feeling 200% Bonus Online Casino in angewandten Walzen Sonnennächster planet Slot Eye of Horus Slot Admiral Nelson für nüsse bloß Registrierung zum besten geben