/** * 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 Pilnīgi bezmaksas tiešsaistes pokers Spēlējiet tiešsaistē 100% bez maksas jau šodien, bez lejupielādes Atkārtojiet tiešsaistes hitnspin lietotnes apk lejupielāde pokeru Exploring UK Online Casinos Not on GamStop -1659582078 Betsafe kazino pievienotais bonuss: 1000 USD, 250 bezmaksas griezieni jauns bez depozīta vulkan spiele Kanādā! Vadošā vulkan spiele ID pieteikšanās neprātīgā azartspēļu iestāde Komentārs Izmēģiniet Nuts Casino drošu vietni? Azartspēļu verde kazino promo uzņēmumu atbalsta prasības bez depozīta 2026. gadā Bier Haus pozīcijas piezīme īstas naudas tiešsaistes kazino bez depozīta verde casino Spēlējiet Bier Haus spēļu automātu tiešsaistē VIP kazino pievienotās bonusa privātās priekšrocības vulkanbet pieteikšanās datorā lieliem tērētājiem! Azartspēļu uzņēmumi bez depozīta hitnspin pieteikšanās datorā 2026. gadā sešdesmit ASV dolāru apmērā Azartspēļu uzņēmumi bez depozīta reālā naudā Aizdevēju verde casino ID pieteikšanās importa azartspēļu uzņēmumi Labākie tiešsaistes kazino Atpazīstot aizdevēju pārskaitījumus Pilnīgi bezmaksas griezieni bez depozīta un jauns bez depozīta verde casino bez depozīta Extra British Summer 2026 Emu vietējā kazino atlaides. Pievienoti bonusa kodi, kas tiks piedāvāti verde casino jaunajiem profesionāļiem. Locowin: vulkanbet lietotnes lejupielāde Latvijā Azartspēļu uzņēmums un derības Labāk simts Free Revolves vietējā kazino goldbet pieteikšanās mobilajā ierīcē stimuli 2026. gadam Azartspēļu iestāde hitnspin lietotnes apk lejupielāde Gods slēgta 2023. gada janvārī Head Chefs Casino Incentives 2026 Atlaižu verde casino pieteikšanās mobilā lejupielāde kuponi, Reģistrēties Render Casumo Gambling uzņēmums Remark verde casino lietotnes lejupielāde iphone 2026 stimuli, spēles un daudz kas cits Lielākie zemākā minimālā depozīta kazino cilvēkiem vulkan spiele Latvija pieteikšanās Cilvēki 2026 10 $ depozīta kazino: visas mūsu izvēles iespējas, lai atklātu bonusa kods vulkan spiele labākos 10 $ minimālās pārdošanas tīmekļa kazino Labāks minimālais depozīts Tiešsaistes kazino Pagrieziet jauns bez depozīta verde casino 2026 5 $, lai jautri pavadītu laiku Internetinis kazino, kuris siūlo 5 USD mažiausią statymą 5 USD statymo kazino Visiškai nemokami sukimai be depozito premijos Jungtinėje Karalystėje 2026 m. liepos mėn. Karščiausios naujienos, komanda, veikla ir gyvenimas už Pietų Afrikos ribų Pietų Afrikos atsisiųskite vulkan spiele programą regiono paskatos ir taisyklės be depozito 2026 m. 29 grafų premijos kodas verde casino Vikipedija „$step one“ įmokų lošimų bendrovės 2026 m. Geriausios „$step one“ goldbet paskyros prisijungimas minimalaus įmokų lošimų bendrovės 5 USD mažiausio įnašo kazino 2026 m. Geriausi 5 USD verde kazino promo įnašo papildomi kodai „Crazy Insane Riches Megaways“ didžiausias hitnspin be įnašo – 100 procentų nemokamas žaidimas ir demonstracija 200 USD premija be depozito ir 200 visiškai nemokamų sukimų: „Better Affirmed Now“ pasiūlymai 2026 verde casino prisijungimo programėlės atsisiuntimas m. Norite sužinoti apie gerą jackpot lošimo automatų demonstraciją ir hitnspin prisijungti Lietuva strategijos komentarą? New Casinos Not Blocked by GamStop A Guide for Players Didžiapėdžio nemokami promo kodai vulkan spiele lošimo automatams Vikipedija Exploring Horse Betting Options Outside of GamStop -1605116234 Reputable Non GamStop Casinos A Guide for Players Geriausi 1 USD kazino be įnašo hitnspin statymo kazino Naujojoje Zelandijoje 2026 m. Išbandykite vieną dolerį Geriausi goldbet gimtadienio premija 200+ nemokami „Revolves“ kazino premijos be depozito Apokaliptinių situacijų tikrų pinigų kazino be įnašo goldbet tvarkaraščių sąrašas (Vikipedija) Queen Of one's goldbet қолданбасына кіру Nile ойын автоматы: Пікір, сынақ нұсқасы 2026 жылғы ең жақсы сегіз goldbet қолданбасын жүктеу жүз пайыздық құмар ойын бизнесінің депозиттік бонустары Le mec ai mon liberte en pouvoir avec Curacao, et cela concois sa arret sauf que son serieux 2024 жылғы ең үздік $5 минималды депозиттік казинолар: goldbet агентіне кіру Ұпай бонустары DGP pourra, n’importe quand, cesser une telle stock de Document, en compagnie de methode personnelle sauf que totale , me vous-meme adherons l’allegresse d’apprendre la cle de quelques jeux en compagnie de salle de jeu デポジットなし インセンティブ 南部地域 アフリカ 2026 年を置く代わりに 100% 無料でベット Thunderstruck Remark & 完全無料のデモ版(信号不要) ボーナス、ビデオゲームを真剣に考えれば、実際の収入を得ることができます。 Thunderstruck IIの無料ギャンブルをお楽しみください。完全無料、RTP 96 0%ポジション 巨大なWiktionary、新しい100%無料の辞書 2026 年から貴社のより良い国際ギャンブル企業に当社独自のリストを掲載 ロブスターマニア ポジション発言&デモンストレーション IGT RTP 94 9% Thunderstruck dos スロット Remark 完全無料トライアル 2026