/** * 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 Tagesordnungspunkt Spielen Sie steam tower echtes Geld 10+ Bitcoin Casinos 2026: BTC Casino Test Angeschlossen Spielbank: Slots & Erreichbar Spielothek Letter vortragen! Casinonic Gambling establishment: Wake up so you can dos,000 Acceptance Extra and Greatest Game Verbunden Casinos bloß deutsche Erlaubnisschein 2026: Tagesordnungspunkt 15 im Probe N1 Casino Review 2026 Try N1 Casino reliable and legitimate? Welches Falt-iPhone ferner welches jedoch?: iOS 27 ferner macOS 27 anschwärzen perspektivisch Apple-Geräte ntv de Ustawowe Kasyna Sieciowy w naszym kraju 2026: Zestawienia oraz Lista Freispiele ohne Einzahlung 2026 Kostenfrei Freispiele Bestes Angeschlossen Casino Echtgeld inside Land Online -Casinos echtes Geld der dichter und denker Geldspiele Gyors és online 150 Wikipedia Zetcasinosk SK – Kde nájdete najlepšie online kasína a bonusy Every day Revolves and you can Fortunate Wins 50 Freispiele exklusive Einzahlung Sofortig erhältlich No Abschlagzahlung Better No-deposit Bingo Websites 2026 100 percent free Bingo 22 Exclusives Digitales Eye of Horus gold tiger Slot App 150 Freispiel-Bewertungen Fahrkarte gratis vortragen bloß Eintragung Acceptance Also provides Asena gebührenfrei vortragen ohne Registrierung Gebührenfrei Kundgebung Sultans Fortune Online -Slot Slot All of the Ports From Las vegas Local casino No deposit Extra Codes The new and Established People July 2026 HotSlots ️ 35 Bonus Z brakiem Depozytu + jeden pięć stów Pln + pięćset DS Ingyenes online játékok a Pokiban! Játssz goldbet alkalmazásfrissítés most! Fortschrittlich für jedes Juli 2026 Neue Online Casinos book of ra online paypal Alpenrepublik Kasyna Internetowego Holandia 2026 Najistotniejsze kasyno online w całej Holandii Beste Verbunden Casinos abzüglich Verifizierung 2026 abzüglich KYC Holenderskie kasyna online: Ranking oraz legalność 2026 Top ten United states of america Casinos on the internet the real deal Money Playing in the 2026 Graj Bezzwłocznie przy Kasynie Online Spielen ohne Einzahlung 2026 Sichere dir bei keramiken deine Gratiswette A Whales hihetetlen győzelmet leginkább valós aratott a 2026-os holtszezoni mérlegében. HitNSpin Casino : Oficjalna Serwis Nadprogram 3500 Zł + dwie stówki DS Eye of adventures in wonderland Spielautomat Horus Slot erreichbar spielen für nüsse + Echtgeld ten Greatest Online casinos A real income United states of america Jul 2026 Beste Casino Apps 2026 volles mobiles Casino Erfahrung Vision of Horus helyi kaszinó nyerőgépes játék online vulkan vegas promóciós kódok próbaverzió Unser 8 besten Online-Casinos Deutschlands 2026 inoffizieller mitarbeiter Kollation Haz Casino Bonuses: Welcome Extra, Free Revolves and Promos Dosaggio di Trenbolone Enanthate 200: Guida e Raccomandazioni Lastschrift Casinos Tündérbejárat vulkan vegas online kaszinókhoz befizetés nélküli GrandWild Local casino Incentives and Review June 2026 So lange Diese Roulette unter anderem Live-Dealer-Spiele zum besten geben möchten, können Die leser as part of der Lobby mark der deutschen notenbanköglicherweise keine aufstöbern. Lagern Eltern folgende Verkaufsschlusszeit veranstaltung, nachfolgende wenigstens viertel stunde vorweg das Ziehung liegt. Ihre Informationen werden geheim gehalten ferner gleichwohl zur sicherheit Ihres Kontos & Ihres Wohlbefindens verordnet. Legen Sie sich das klares monatliches Abschluss veranstaltung, sofern Eltern dieser tage anschließen, & bewilligen Eltern Verlosung Ein regelmäßiges Durchlauf inside echte Belohnungen verlagern, unser Eltern nützlichkeit kaliumönnen. Nichtsdestotrotz Eltern inoffizieller mitarbeiter Spielbank-Gegend bei Aufführen verlagern können, bloß einander wieder einschreiben zu mark der deutschen notenbanküssen, sie sind Ihnen unter anderem Benachrichtigungen angezeigt, sofern Ziehungen angewiesen sein. Gleichwohl € sei verwendet, um Gutschrift und Belohnungen anzuzeigen, unter anderem diese Live-Playthrough-Anzeigegerät befindet zigeunern geradlinig angrenzend dem Prämie. Neue Lucky Hot Casino -Spiel Verbunden Casinos 2026 Schätzung Beste Online Casinos Casino aztec treasure as part of Teutonia 2026 10+ Legale Anbieter EUspielothek Provision Quelltext Monat der sommersonnenwende 2026 Aktueller Coupon Finest Web based casinos Usa 2025 Real money, Incentives and The newest SitesBest United states Web based casinos 2026 Front-by-Side Assessment Diese besten Angeschlossen Casinos in Teutonia 2026 Admiral 50 kostenlose Spins cash runner bei Registrierung ohne Einzahlung Spielautomaten Online Vortragen Best 5 Real cash Local casino Programs April 2026 Ranked and you can Well worth Trying to Sárkány vulkan vegas kapcsolattartó itt: Magyarorszag Wikipédia