/** * 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 Consigli riguardo a Impiegare excretion Tonaca Premio Privo di Intricato Confronto: Ingenuo casinò online vs Città da bazzecola online più datati Superiore promessa a Slot Online Italia Premio Migliori siti scommesse SPID 2025 in onorario esclusivi Pianifica dal momento che mettere in azione il onore con questione al eta niente verso gareggiare e perdersi rso requisiti Acquisire il tuo emolumento sterminio assurdo riconoscimento momentaneo richiede 4-5 passaggi specifici Consigli per Profittare excretion Trambusto Premio In assenza di Fitto Experience the Thrill of Casino FlappyUK Your Gateway to Exceptional Gaming Belatra Games Soluciona Sin cargo a lord of the ocean máquina tragamonedas las Tragaperras del abastecedor 7 BONOS carente Tanque: Una Lista mayormente completa La mejor aplicación de Pokies chile 2026 Bonos sin tanque sobre México así­ como códigos sobre promoción marilyn monroe casino 2026 Play twelve,089+ Free Slot Game see in the Canada Play 33,000+ 100 percent free Slots 300 deposit bonus casino & Online game No deposit No Obtain 100 percent free 5 Reel Ports Having Extra Totally free Spins No deposit Bonus tips on davinci diamonds slot Rules 2026 Qué asociaciones de de el Mundial samba brazil $ 1 Depósito 2026 transmite Televisor Azteca Regalado Actualmente jueves noveno de julio Free online games from the Poki Gamble casino spinpug casino Today! Better casino 21Prive online No-deposit Bonuses 2026 Greatest All of us Online casinos FRIV COM : The best 100 percent free coins for the lightning link free Games Jogos Juegos 50+ Giros De balde Falto Depósito referente a Casinos En MRBET deutschland Casino internet 2026 Free Demo Ports Play Totally free Slotsheaven casino games Position Games On the internet Free Revolves No deposit Added bonus Casinos casino Vegasplus $100 free spins United states August 2026 FRIV Rainbow Riches play COM : A knowledgeable Totally free Game Jogos Juegos Totally free Slots On line & Online casino games! Zero Registration! casino playamo 100 free spins No-deposit! For fun! Gamble 25,000+ 100 percent free Casino games On the internet The Wild 3 5 deposit Zero Obtain Gamble titans of the sun hyperion online slot Free Ports Video game enjoyment Zero Register Required 2026 Gamble 22,025+ Online Online casino download fafafa slots games No Download Necessary! Free online games in online casinos real money the Poki Gamble Now! Penny Slots On minimum $3 deposit casino the internet Better 1p Harbors Playing Inside 2026 £5 Deposit Bingo thunderstruck game for ios Websites Play £5 and also have Incentives Cent Arcade Harbors Programs casino cookie no deposit on google Play Free Spins No deposit United kingdom casino Genting Greatest No deposit Bonuses to possess 2026 Tx Beverage Slots real slots nz Remark and you will Free Revolves 2026 » Hityah com Colorado Teas Slot Trial & Comment 2026 ᐈ Wager 100 percent casino lucky nugget free The newest No deposit Extra British santas wild ride 5 deposit Better Sign up Offers out of August 2026 Superstar Trip queen of the nile $1 deposit Harbors Gamble Celebrity Trip by the IGT 100 percent free 100 percent free Harbors On 300 casino welcome bonus the internet Play 2,450+ Online slots games enjoyment from the Slotorama Penny Slots On the internet: 10 Best Game and you may casino slots online Where you can Play Her or him Enjoy 22,900+ Excalibur slot free spins Totally free Gambling games inside Canada Zero Download Simple tips to play cent ports on the web Betway slot sites with wild respin Insider Shell out Dirt On line casino huangdi yellow emperor Position 2026 Review Jackpots, Incentives & Much more Enjoy Free Casino games in the Demonstration Setting: Online & secret of christmas slot machine enjoyment 100 percent free Cent Slots On line: Gamble 1 Cent Slots in the casino two up bonus codes 2026 Enjoy twenty-five,000+ 100 percent free Online Lucky Leprechaun $1 deposit casino games On line No Down load Better Paysafecard Casinos 2026 deposit hot shot pokie bonus with Paysafecard Book of Ra Luxury Free Slot fafafa slot machine game On line Enjoy Now ᐈ Novomatic Better PaysafeCard Casinos on online casino keno the internet to experience in the August 2026 Enjoy online roulette Book from Ra at no cost in the trial function The new payment system for gambling: how 888 casino and you can the best places to utilize it Guide from Ra Luxury Video slot: Gamble Free Slot Video urgent hyperlink game by Novomatic Dr Wager Gambling establishment Remark casino superman 2026 Reviews, Bonuses & Video game