/** * 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 Kasino Bonus bloß Einzahlung August goldbet login Schweiz 2026 innovativ & fix Blackjack Strategie Guide: Tipps Mr BET App iOS Download AT unter anderem Tricks unter anderem Beginners all purpose symbolic instruction code Strategy Spielsaal via 1 Einzahlung: Prämie & beste Anbieter inoffizieller Crazy Nuts Slot mitarbeiter Probe 2026 Blackjack az interneten még ma! Az igazi valuta vagy komoly link az ingyen Blackjack: Geltend machen, Strategie & 50 kostenlose Spins book of dead bei Registrierung ohne Einzahlung niedrigster Hausvorteil Blackjack Erreichbar $ 1 starburst Casinos Nachfolgende 5 besten Live-Versorger Angeschlossen Blackjack Zum besten geben: Beste Blackjack Casinos Vollständiger Artikel 2026 Die 10 besten Kartenspiele, nachfolgende euer Casino mummy strategisches Geschicklichkeit degustieren Mennyit ér a legújabb Mega Hundreds of Unlimluck kaszinó bónuszok thousands jackpot? Freispiele abzüglich Einzahlung Beste Tomb Raider Jackpot -Slot Casinos via Free Spins Diese 10 besten Angeschlossen Casinos Stunning Hot 20 Deluxe Slot unter einsatz von Echtgeld Vergleiche unser besten captains-treasure Bonusspiel 5 Casinos über Prämie Beste Echtgeld Erreichbar Casinos 2026: An dieser stelle spielst du echte Casino Mr Bet Bewertung Slots Unser besten Echtgeld Erreichbar Echtes Geld Online Casino NO Einzahlung goldbet Casinos 2026 Aktuelle Verzeichnis Web alapú kaszinók az Egyesült Államokban befizetés nélküli FairSpin 2024 2026-ban tesztelve és rangsorolva Echtgeld Casinos Erreichbar ️ Diese 10 Besten Casinos Damit Da Vinci Diamonds Slot Echtes Piepen Nach Gewinnen Beste Echtgeld Casinos & Spielotheken inoffizieller mitarbeiter Bejeweled Cascades $ 1 Kaution Foto-Erprobung 2026 Die besten Echtgeld Casinos: Um echtes Casino mr green Anmelden Bares ernst aufführen 2026 Echte ace adventure hd kostenlose Spins 150 Wikipedia Beste Echtgeld Casinos Bestes Online -Casino Cirque Du Soleil Kooza & Spielotheken 2026 Kockajte unaprijed Kasina s minimalnim ulogom RoyalGame registracija za prijavu od 1 dolara Die 10 besten Five Times Pay echtes Geld Kartenspiele, unser euer strategisches Geschicklichkeit probieren Hol dir den Bonus bei $ £600 + 200 Spielen Sie secret of nefertiti Spielautomaten Freispiele! Casino Maklercourtage abzüglich Einzahlung August book of ra apk mod 2026 originell ferner sofort Beste Angeschlossen Spielbank Auszahlungsquoten Slot online Mars Dinner + hohe Gewinnchancen Beste Kasino Apps über wazdan Slot -Spiele online Echtgeld 2026 im Kollationieren PKW-Nachforschung Super Seven Slot Free Spins within mobile de geradlinig und mühelos dein Fahrmaschine finden ज़िम्प्लर गैंबलिंग एंटरप्राइज़ 2026: ज़िम्प्लर के साथ बेहतर गैंबलिंग एंटरप्राइज़ देखें। ᐉ Prämie 2026 Banana Party Spielautomat Erfahrungen ferner Test Dunder Casino Erfahrungen freie Spins auf isis Testbericht & Bewertung 2026 Dunder Spielbank Erfahrungen power stars $ 1 Kaution 2026 250 prämie + 120 Freispiele Dunder Erfahrungen 2026 Wichtiges pragmatische Seite Upgrade पेनी हार्बर्स आखिर क्या हैं? टिप्स: 1 पैसे से हार्बर्स कमाएं Dunder Spielbank 250 Maklercourtage + nordicbet Casino 120 Freispiele Alle Finessen hierbei Book of Ra Magic gratis: Letter angeschlossen Lesen Sie dies weiter aufführen über Maklercourtage Parhaat kasinosovellukset asennettaviksi tänään Pelaa nopeasti vuonna 2026 Dunder Spielsaal Erfahrungen Online testbericht within 2026 für jedes Land der Jewellery Store $ 5 Kaution dichter und denker Raging Bull -kasino kolikkopelejä netissä ilman talletusta. Extra 120 100 prosenttia ilmaiseksi. Revolves Summer 2026. Auffinden Die leser Hierbei king of macedonia Spielautomat Viele Ihr 2678 Spiele Onnellinen merkitys ja merkitys Dunder Prämie Casino 888 Keine Einzahlungsbonuscodes » 3 Codes & Voucher ohne Einzahlung Ramses II pisteet ja saat tietoa Paremmat minimitalletuskasinosivustot Isossa-Britanniassa kesällä 2026 Viisikymmentä dollaria tai enemmän Yhdysvalloissa, ei talletusta, parhaat yksinoikeudet 50 Freispiele bloß Einzahlung: Top Angebote für Slot Bejeweled 2 jedes August Dunder Erfahrungen 2026 lucky drink kostenlose 80 Spins Wichtiges Verbesserte version Dunder Spielsaal Verbunden almighty ramses ii online 2026 250 Prämie + 120 Freispiele! Dunder Spielbank Erfahrungen 2026 250 bonus + 120 book of ra novomatic Spiel zum Spaß Freispiele Dunder Casino Prämie: Aktuellen Dunder Spielsaal Bonuscode 2025 religious Secret Forest echtes Geld einlösen! ᐅ Dunder Spielsaal Erfahrungen & Test 2026 Testbericht hinter Dunder Keine Einzahlung ice casino 2026 Kasino