/** * 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 Pin Up Casino: секреты выбора лучших настольных игр и слотов J ai teste les retraits de Wildies Casino et voici les delais reels Wildies Casino biztonsagi es szabalyozasi valtozasai 2026 evben The site has typical campaigns, as well as multiple a way to incorporate Wins for you personally at the zero pricing Zodiac Casino has the benefit of a robust mobile feel, with many content available on modern cellphones and you can pills Gambling establishment apparently made an effort to create a dash for it, but is actually caught soon afterwards Select SSL qualification to ensure the system operates legitimately on the web Here is the Top Sweepstakes Local casino Discount Password Right now Do not Skip It Il Meglio Online Casino Online: Una Guida Esaustiva per Scegliere la Sistema Perfetta If you value private dining tables, particular British names provides distinguished set-ups Dominance Local casino British enjoys a really high Security Directory of nine Should your objective should be to withdraw money immediately instead of to experience, that is not reasonable from the controlled casinos All the appropriate legislation and you will restrictions uncovered from the all of our reviewers was noted alongside for each and every offer a lot more than Decide for the, put & wager ?10 to your chosen slots within this 7 days out of registering 888starz Befizetés és Kifizetés – Minden, Amit Tudni Érdemes SuperSlots helps prominent fee choice plus significant cards and cryptocurrencies, and you can prioritizes prompt earnings and you will mobile-ready gameplay Betus Gambling enterprise will bring a variety of safe and effective withdrawal actions from inside the 2026, providing prierican user legs The benefit bring of was already launched during the an extra screen Discover the Thrills of Tenobet Casino & Sportsbook -1822250839 Betting winnings are believed taxable money in america, along with getting users when you look at the New york SpinBlitz Promo Code and you may Added bonus Even offers: Get ten Totally free South carolina + 30 Payment South carolina Revolves Come prelevare le vincite su Cazimbo Italia 2026: metodi rapidi e sicuri Trusted Online casinos 2025: Ideal Web based casinos You to Spend Real money Of numerous networks keeps stretched its fee choices to are brand new coins such as for example Dogecoin, Tether, and you may Bitcoin Dollars This method escalates the likelihood of changing bonus funds towards withdrawable dollars The top casino slots of 2026: a deep dive into popular games and themes WinThere – Your Ultimate Online Casino Experience How to maximize your experience at Best Online Pokies Australia 2026: tips for using Longfu88 Casino Indonesia payment security: ensuring safe transactions every time Wagerland Casino Adds Direct Bank Transfer Options For All Verified Players Join the excitement at Neosurf Casino Australia 2026: a hub for safe online gaming This Research Will Perfect Your Yard Casino Официальный Сайт: Read Or Miss Out Explore the best of PayID Pokies Australia: Top promotions and instant deposit benefits Four Tips For Казино Ярд Онлайн Success Aguero Casino Argentina: ventajas del cashback y sus mejores juegos Uživo klađenje na Frumzi Casino: kako se uključiti i osvojiti Take pleasure in many different write beers, wines and you can superior beverages versus lost all excitement You might down load the new Dominance Casino App throughout the Software Store or Bing Gamble Store Everything You Need to Know About Lomebet 1825429031 Casino utan svensk licens Vad du behöver veta Online Slot Machine: A Comprehensive Overview Online Roulette Perk: A Guide to Maximizing Your Profits Parece ist essentiell, wirklich so welches Spielbank sichere Technologien verordnet unter anderem selbige Aussagen gesichert man sagt, sie seien Ein Provision ist Einem Konto gutgeschrieben, und Eltern fahig sein fix unter zuhilfenahme von dem Geben den arsch hochkriegen! Jeder Anbieter, ihr den No Anzahlung Freispielbonus z. hd. Neukunden umfasst, gestaltet eigenen uff zusatzliche Erscheinungsform Freispiele sie sind leer wichtige Konstituieren bei Verbunden Casinos leistungen Finest Mobile Casino Site: The Ultimate Overview to the Leading Mobile Online Casinos Pinco rəsmi idman mərc saytı: təhlükəsiz ödənişlər və sürətli çıxarışlar Что стоит знать о Pinco casino: от игр до удобных методов оплаты