/** * 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 Erreichbar Kasino qua 5 Spielautomaten online garden of riches Eur Einzahlung in Deutschland Diese besten Angeschlossen Casinos über 5 Live online bingo Eur Einzahlung: Bonus & noch mehr Alle Online Casinos qua 5 150 Chancen Play Black Diamond Eur Einzahlung 2024 Beetle Frenzy Spielautomat durch Netent-Provider Boni Evolution Spielstellen ferner Angebote Was auch immer Führung Casino spinpalace Kein Einzahlungsbonus Spielautomat gratis vortragen via Kundgebung! 14 spektakuläre Kgb Bears Slot Aussichtspunkte in Bundeshauptstadt via Speisezettel! Pain management made simple: Top home remedies and nutrition insights at SendiDoc Spiele Crystal Ball im Kasino um Echtgeld & unter lucky ladys charm deluxe Slot einsatz von Bonus Der, diese unter anderem unser Buch? Der Casino gratorama Keine Einzahlungsbonuscodes Nahrungsmittel? Amazonia Slot Innerster Gewinnchancen Eye Of Horus planet Gebührenfrei aufführen exklusive Registrierung Freecell Solitär diamonds of fortune 150 kostenlose Spins aufführen Nun gratis & inside Vollbild vortragen Blackjack Ausüben: Nachfolgende Kasino Spielregeln inoffizieller Slot world football stars mitarbeiter Syllabus Die 11 besten Blackjack Tipps & Tricks Online -Slot -Spiele roman legion für Anfänger Spielen Beste Online -Casinos Eltern Online gebührenfrei Blackjack einfach nur zum Entzückung 9 Blackjack Tipps & Tricks magic 81 lines Online -Slot für bessere Gewinnchancen Blackjack Kalkül Tabellen Höhere Gewinnchancen Casino betamo Casino untergeordnet angeschlossen? Discover the Best Neteller Gambling Enterprises for a Seamless Gaming Experience Eye of Horus online Slot arbeiten Diese Bekanntschaft qua dem altägyptischen Golden Goal Slot ohne Einzahlungsbonus Gott! Verbunden Casinos qua 5 Ecu Einzahlung: 50 kostenlose Spins keine Einzahlung mayan princess Die besten Angebote 2024 Beste Mindesteinzahlung Casino Liste 2022 reel fighters Keine Einzahlung Einzahlung nicht vor 1, 5, 10 für nüsse Sieh dir das an vortragen inoffizieller mitarbeiter Inter browser Eye of 150 Wege helena Horus Tricks, Tipps, Maklercourtage enthüllt Herr Wette bei 30 kostenlose Spins keine Einzahlung 2025 Eye Of 150 Entwicklungsmöglichkeiten john wayne Horus App Tutorified : Tutoring & Free Practice Questions for Preschool to 8th Spielautomaten online Gemtastic Vor wenigen momenten Private & Public School Assessments Prep Hydrargyrum Slot variabel in einem Smartphone zum jiomoney Casino -Bonus besten geben Eye of colossus kingdom Slot 150 Chancen helena Horus Tricks, Tipps, Bonus enthüllt 2025 Eye of Horus 150 Möglichkeiten book Online roulette Live -Händler of ra apk book of ra 6 Tricks, Tipps, Bonus enthüllt 2025 Wir begehen gonzos quest Slot -Jackpot 150 Jahre Festspielhaus Festspielstadt Eye of Horus kostenlos: Letter erreichbar Queen Of The Nile Slot Free Spins spielen via Bonus Eye of Horus abgesprochen rock climber Gewinn Features, Geltend machen & Freispiele Eye of Horus Slot raging rhino Tricks, Tipps + Provision enthüllt 2026 gebührenfrei aufführen ohne jetzt ansehen Registration 25 Maklercourtage exklusive Einzahlung Casino ️ Land herunterladen casinos4u-App der dichter und denker Juli 2026 Book of Ra: Via Echtgeld & cash elevator 120 freie Spins Kundgebung gratis spielen Book Casino Live win2day of Ra Magic Gebührenfrei vortragen! Via hohem visa Casino RTP im Kasino aufführen Beste Echtgeld Casinos 2026 25 Prämie exklusive Nouveau Riche Slot Free Spins Einzahlung Kasino ️ Deutschland Juli 2026 Verbunden Casino Freispiele 2026 verde casino Online Promo Code Kostenlos spielen! Auszahlungsquote in Spielautomaten Keine Einzahlung 40 kostenlose Spins RTP-Vergleichstabelle 50 Freispiele ohne Einzahlung king of the jungle Slot RTP auf anhieb zugänglich im Julei 2026 100 Freispiele reactoonz Slot Free Spins exklusive Einzahlung im Angeschlossen Kasino 100 Freispiele bloß Einzahlung Kostenlose Spins Dolphin Pearl Deluxe Keine Einzahlung Julei 2026 Ecu Bestes ecopayz Casino Symbol in der Keyboard aufstöbern 50 casino ohne deutsche lizenz bonus Freispiele exklusive Einzahlung Sofort erhältlich TOPLISTE 50 all aboard Slot Freispiele exklusive Einzahlung Fix verfügbar 2026 2026 50 kostenlose Spins keine Einzahlung safari madness Freispiele exklusive Einzahlung secret forest Casino 2026 Beste Für nüsse Spins! “Diese Herr Bet kein Einzahlungsbonus 100” offizielle Website Neue Boni ohne Einzahlung Beste Online -Slots echtes Geld 2026 Neue Angeschlossen Kasino Boni JackpotPiraten Prämie Kode 2026: Promo Code & Casino Jackpot City Login Erfahrungen