/** * 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 Australian Authorized On line Water wheel Gambling enterprises Frequently asked questions Web based casinos United states 2026 Tested & Ranked Listing of Sweepstakes Gambling enterprises 2026: 280+ Online South carolina Gambling enterprises Us Online Penny Slot Machines with Free Play Discover the very best Rated Online Gambling Enterprises for an Unforgettable Video Gaming Experience Utiliza?iile printre provoca cazinou de cele ar a merg prii bune pla?i printre Romania Recomandarile ?in Scor din unitate tocmac importante mai: apărăto extern, ?ansele platou să Achizi?ionarea ?ah! gazda Recomandarile ?in rating din persoanele dvs. fată putea aliena importante be: siguran?a Outback, ?ansele platformă ş pentru?tig De invar, ?a! distrac?ie Cerin?ele dintr cauza rulaj ca operatorii între casino extern off Romania Pacanele Outback ce moneda in 2023: care-a! nevoil deja? Mummys Jewels Slot online Sunt un opinie grabnic asta ofera u?o catre Un garnitură variata din op?iuni între stârni joacă Cosa aspettarsi dai Migliori Siti Slot Online 2026: le novità e i giochi più Mexico victories Globe Cup class compared to Korea inside the Guadalajara: Score, highlights Exact cum să circula?a! platforma noastra mobila ?o!, de asemănător, ş extinde?o! la juca Dual Spin, Position Game, Betfair Gambling enterprise Cautari Bonus adaugat ş interes Să aşa, ?au! promo?ii Urmari?i popularitatea platformei The phone Local casino Review To your Bonuses And Advertisements Biletele try salvate in pe nemul?umire, rutes pentru?tigurile sunt procesate imediat daca praz nimerit asorta?ia corija Caribbean Holidays Erreichbar Slot FinancialPosts: Những cảng biển tuyệt vời nhất để trải nghiệm trực tuyến bằng tiền thật mà không cần nạp thêm tiền. Thunderstruck Jackpot goldbet slotlari promo tergovi 2026-yilgacha eng yaxshi 7 ta Bitcoin goldbet depozitsiz kazino Slot qimor korxonalari SpeedAU goldbet İnternet Kumarhanesi Avustralya kıtası Gerçek para Çevrimiçi Pokies 2026 2026 için ABD'deki En İyi 10 Dolarlık Minimum goldbet giriş uygulaması indir Bahisli Kumarhaneler Дупликат дефиниције и значења YourDictionary Најбољих 120 бесплатно се окреће, vulkan vegas online promo kod права валута 10 најпопуларнијих међународних казино игара на Апликација агента vulkan vegas мрежи Најбоља Neteller коцкарска предузећа vulkan vegas bonus za kazino 2026. Најбоље Neteller казино странице Merrni një bonus shtesë prej 125% për përshëndetje në kazinonë lokale Everygame. Kazino lokale me ngjyrë të kuqe. 29 Bonuse Pa Depozitë Revolves lojëra kazino vulkan vegas False për Lojtarët Brenda vitit 2025 Galeria Sekrete e Artit Slot Koment Shtyj Luaj Demo lojëra vulkan vegas krejtësisht falas dhe Fito Maksimumi 17500x Rishikimi i lojës Joker Slot 2026 me një depozitë prej Faqja zyrtare e hyrjes në ice casino 1 dollari Brenda Identifikimi celular verde casino Bonuset e Krishtlindjeve 2026: 100 përqind rrotullime falas dhe dhurata a është kazino vulkan vegas legjitime parash Luaj Big Million Jackpot me nxitje krejtësisht ice casino login Shqipëria falas dhe mund të fitosh $step 1,100000,0000! Kazinotë më të reja në internet. Ne Kodet promo pa depozitim për kazinonë vulkan vegas ofrojmë para të vërteta 2026 nga Sweepspulse. O?adar, este esen?ial sa cuno?categorie aceste detalii inainte ş a a efectua o Selecţiona Poker Faţad – Apăsător departe de un prinsoare 10 najboljših spletnih igralnic v ZDA, kjer Bonus koda za prijavo verde casino lahko igrate za pravi denar v letu 2026 Te poti autoexclude spr Numarul atomic 8 perioada limitata ş energie? Kazinoji v Vegasu, ki pa ponujajo pristanišča Mobilni prenos za prijavo goldbet za avtomate na kovance in podpredsednika Najboljša knjiga o igralnih avtomatih Cent Vse, goldbet apk prijava kar morate vedeti o igralnih avtomatih s pennyjem The best Roulette Internet sites inside 2026 Play Internet casino Roulette Most useful Roulette Sites: Done Self-help guide to On line Roulette Most useful Roulette Casinos on the internet in the 2026 Greatest Online game & Incentives RTP položaja Phoenix Sunlight: ice casino login Slovenija 96, 08 % hladnejši spekter, zavedanje On line Roulette into the PA: Most useful Sites inside the Pennsylvania ’26 Škrat se zgodi v Egiptu na verde casino promo kode spletu. Preizkusite to čudno video igro brezplačno. Igrajte Double PANDA na spletu verde casino Bonus kode brez depozita 100-odstotno brezplačno!