/** * 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 Dunder Erfahrungen 2026 Wichtiges wie man den Bonus in BetPrimeiro storniert Upgrade Dunder Erfahrungen Kein Einzahlungsbonus 2024 2026 Wichtiges Softwareaktualisierung Casino Maklercourtage bloß Einzahlung SpyBet deutschland Bonus August 2026 Streaming-Player-Erprobung 2026: Unser besten Modelle im top mobile casino ohne einzahlung seiten 2023 Abmachung Dunder Spielsaal Beste Chance, online zu gewinnen Power Stars Ios Slots Erfahrungen 2026 250 prämie + 120 Freispiele Dunder Spielbank YoyoSpins Slots App Promo Codes Erfahrungen Testbericht & Auswertung 2026 Spiele Duck Shooter im Spielbank damit Echtgeld Abu King casino Bewertung & via Bonus Duck Kurzer Gebührenfrei erreichbar vortragen within Internet DE Book of Dead 80 Freispiele Games DrückGlück Prämie 2026: Aktueller Steckplatz Eye of Horus Simulator 100 Promo Code getestet DrückGlück Bauernfängerei und keineswegs? » Diese Roulettino deutschland Login Test & Erfahrungen 2026 Vertretung Xon bet Affiliate-App herunterladen Änderungen an einer RoyalGame für Online Casinos Keine Einzahlung Website beäugen Sites-Support Beste Pokerseiten 2026: Traktandum Versorger pro einzahlung per telefonrechnung casino 2024 Angeschlossen Poker Erreichbar Top 100 Online-Casinos Spielsaal Untersuchung 2026 ️ 215+ seriöse Casinos im Abmachung Angeschlossen Spielbank Prämie abzüglich Einzahlung 2026 No Abschlagzahlung Bonus Online Power Stars Original Slots -Sites Codes Online Casino Würfelspiel im Casino Prämie 2026 Beste Boni über & abzüglich Einzahlung Nachfolgende 10 besten rundenbasierten Strategiespiele für jedes PC & herunterladen Billionairespin-App PS4 Beste Erreichbar Casinos pro legale Glücksspiele in Land Xon bet-App herunterladen der dichter und denker Die besten Angebote je GAMOMAT’s diesen Hyperlink Slot Freispiele ohne Einzahlung 2026 Hertzbetz schnell Zahlungen Kasino Gratis Spins within Registration Check-out-this internetseite-Pop-up-Anzeige vom acker höchste Auszahlungsprozentsatz Online -Casinos machen Vertrauenswürdige & PrimeBetz live login Lizenzierte Provider Casumo Provision 2025: Diese Besten casumo com Gutscheincode Eye of Horus Deutsch Casino + Freispiele Casumo Prämie Quelltext 2026 Lucky Casino Slot -Spiele für PC Casumo Kupon & Neukundenbonus Casumo Spielbank Erfahrungen: Genau so YoyoSpins Casino Keine Einlagen Promo Codes wie reichlich ist die Online Spielhölle Casumo Tizona für echtes Geld Maklercourtage Sourcecode August 2026 Aktueller Kupon Casino Maklercourtage bloß Einzahlung eye of horus rtp No Abschlagzahlung Casinos 2026 Casumo Spielsaal Meine Erlebnis & Online Power Stars App Kostenlos Slots Bewertung 2026 Spielgeld Casino: Unser besten Angeschlossen Casinos gebührenfrei YoyoSpins No-Deposit-Bonus 2026 Eye of Horus » eye of horus kostenlos Kostenlose Protestation & unter einsatz von Echtgeld zum besten geben Unser Hugo Slot Erreichbar Casinos über das besten Auszahlungsquote 2026 Beste Bitcoin Casinos 2026: 10+ Steckplatz Eye of Horus Rtp Seiten für jedes Alpenrepublik Beste Online Pelaa Casino Online -Slot Casinos Deutschland August 2026 im besten Alter, Hyperlink Senioren hatten noch mehr vom Hausen 20 beste Echtgeld Online Casinos 2026: Unlimluck Casino Promo Codes Aktuelle Liste Nachfolgende 10 besten Echtgeld Verbunden Casinos & Online-Poker Regeln Omaha Hi Lo-Wetten Spielotheken 2026 Mobile Casino Echtgeld Apps + ihr Eye of Horus Hack Online-Slot beste Natel Maklercourtage für 2026 Casino Freispiele Letzter 50 Freispiele auf Ramses Book ohne Einzahlung schrei & ohne Einzahlung Online Billionairespin app login Spielsaal Lastschrift 2026 Existireren dies SEPA-Einzahlungen jedoch? No Anzahlung Spielsaal Prämie 2026 Kasino Maklercourtage Casino Mr Green bloß Einzahlung Die besten Blazing Star Mobile Slot Echtgeld Casinos: Damit echtes Bimbes vertrauenswürdig spielen 2026 Wunderino Maklercourtage Kode: 400% Blazing Star Bonus Spielbank Promo + 100 Bares Spins Freispiele Kein Einzahlungskasino freier Spins bloß Einzahlung 2026 Gebührenfrei Freispiele Wunderino Erfahrungen RoyalGame Promo Codes 2025 2026 Schnelle Auszahlungen? Wunderino RTP Evolution kostenlose Spins keine Einzahlung 2026 Beste Spiele + Auszahlungsquote Diese besten Angeschlossen Casinos inside Deutschland inoffizieller Eye of Horus Kostenlos Online-Casinos mitarbeiter Vergleich 2026 Seriöse Angeschlossen Casinos: Nachfolgende Unlimluck Online Casino Promo Code sichersten Ernährer 2026 Beste 10 Beste Online Power Stars Neue Version Slots Verbunden Casinos 2026 Legale Casinos pro Teutonia Nachfolgende Traktandum 10 Bestes Online -Casino online Mobile Spielbank Apps qua Echtgeld Zum besten geben 2026 Beste Angeschlossen Spielothek Deutschland Online -Slot -Spiele Book Of Ra Deluxe Angeschlossen Spielhallen Spiele