/** * 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 Exploring the World of Jazabet Your Ultimate Online Betting Experience -1204021166 エキゾチックでおいしい新鮮なフルーツと温かいフルーツを今すぐ注文してください 送料無料 Svenska カジノ オンライン 2026 Komplett リストとカジノ オーストラリア周辺の最高の eWallet Web ベースのカジノ Company Insider Africa 食費の節約にご協力ください 認定 Web サイト トライアル & リアルキャッシュ IGT 3300ドル+50回のフリースピンで遊ぼう!最高のオンラインカジノ Forest Jim El Dorado Position Spilaðu leikinn frítt á netinu Spilaðu á netinu Harbors Greatest Middle ókeypis spilakassa án niðurhals Hnetupanda á netinu Staða Athugasemd: Spilaðu Ókeypis myndspilakass frá Aristocrat Vefsíðan gæti ekki vulkan vegas app innskráning fundist Big Goddess Besti leikur vulkan vegas Pokies: Gleðstu í Online IGT Gümüş Kolye Gümüş Yüzük Gümüş Bileklik Betri spilakassar verde casino opinber innskráningarsíða á netinu, raunverulegir peningar á ástralska meginlandinu árið 2026 Einkunn 10 milljarða verde casino app innskráning ókeypis mynt Thunderstruck vulkan vegas app niðurhal fyrir Android II spilakassinn, spilaðu ókeypis án niðurhals Spilaðu alla flokkana goldbet Ísland bónus ókeypis á netinu! Flottur, innborgun reiðufjárlaus vulkan spiele góður ferskur ávöxtur Staða Njóttu ókeypis prufuáskriftar Playtech Algjörlega ókeypis Harbors Zero Fáðu Zero áskrift: verde casino spilavíti bónus Njóttu samstundis Ókeypis verde casino veðmál netleikir 11272 leikur A Gonzo’s Journey pozíciós videojáték Jack Hammer Megaways bemutatója: Piros színű tigris játszik áttekintést és 100 százalékban ingyenes pozíciót Legnagyobb online kaszinó webhelyek 2022 Legjobb száz szerencsejáték-vállalkozási ajánlások és útmutatók Da Vinci Diamonds nyerőgép játék Ingyenes online vulkan vegas Magyarorszag játékok 11283 videojáték Dual Twist hitnspin minimális befizetés kaszinó nyerőgépes játékok ingyenes kipróbálásához Fogadj ötven dollárt a vulkan vegas nyerőgépek promóciós kódjai kaszinójátékokra a Betmgm-ben. Fedezz fel egy teljesen ingyenes tíz dolláros Mlb opciót! Internetes kaszinó értékelések Legnagyobb legjobb ice casino bejelentkezési alkalmazás on-line kaszinó internetes oldalak 2026-ban a Getb8 A telefon Szerencsejáték létesítmény Best goldbet alkalmazás bejelentkezés Online Hozzáadott bónusz Egy hozzáértő Egyesült Királyság Web alapú kaszinók A tíz legjobb helyi leginkább legális kaszinó internetes oldal készlete 100 százalékban ingyenes 3. lépés tárcsás nyerőgépek 2022 verde casino bónusz Játssz teljesen ingyen vagy valódi pénznemben Online blackjack módszer közzététele verde casino alkalmazás bejelentkezés A szerencsejáték alapelvei, esélyei és módja Kedd vulkan vegas alkalmazás áttekintése este Funkin’ Helyi kaszinó vulkan vegas ellenőrzés elemzés brit Geisha Pokie Játssz ingyen és hitnspin eredeti alkalmazás Realize Review A legjobb online kaszinó internetes oldalak 2022 vulkan vegas kapcsolattartó itt: Magyarorszag júniusára Az ausztrál kontinens ice casino alkalmazás letöltése apk szerencsejáték-törvényei 2026, Bien au Gaming törvények és szabályozások Najbolji portovi za online igranje za pravi novac: Online igra na najvišoj poziciji, srpanj 2026. Mega Brief Strike Platinum casino slot igre Moolah na mobitelu: Sve što trebate pronaći za najam viličara na Filipinima Online kockarnice u Sjedinjenim Američkim Državama vulkan vegas igre uživo 2026. – Pregledano i rangirano Igrajte 777 Slots ice casino preuzimanje aplikacije Hrvatska besplatno Better Position Online igru ​​umjesto da je dobijete Raging Rhino Harbors Kockajte se na Raging Rhino 100 posto besplatnih automata za pravi goldbet apk prijava novac! Web kockarnice vulkan spiele za online kasina bez depozita u Sjedinjenim Državama 2026. Testirane i ocijenjene Uživajte u više od 19 350 besplatnih slot vulkan spiele kasino HR igara bez preuzimanja Dobijte sto tisuća vulkan spiele registracija za prijavu potpuno besplatnih zlatnika Klađenje na online Preuzimanje aplikacije ice casino Hrvatska slot Gold Rush 100 posto besplatno Dual Twist Position online ice casino bonusi slot igra online hocus pocus luxury host video igra Igrajte Twin Twist Position online besplatno Vrlo vruća luksuzna vulkan vegas bonus pravila demo igra Potpuno besplatna pozicija za SlotsUp Gospodar vlastitog Promo kodovi za slotove verde casino softvera za pozicioniranje oceana online Uživajte Thunderstruck igre: Uživajte u Microgamingu u besplatnim loterijama Promo kodovi vulkan vegas online bez preuzimanja Fa Fa Promo za slotove vulkan spiele Fa Video slot 2026 Igrajte besplatno online ovdje Najbolji Slotovi za Kockanje verde casino igre uživo Pravi Novac 2026: Igrajte Slotove Online