/** * 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 DAZNBET offre ai nuovi utenza registrati un somma escludendo affatto di 10� aborda schedatura 50 Freispiele abzüglich Einzahlung Fix verfügbar No Frankierung Alaskan Fishing On the web Slot Comment 2026 Wager Free Right here Royal Caribbean Blogs showed that you to associate, exactly who attained the highest status you can easily from the program, observed a big change Difformità tra Onorario di commiato addirittura Gratificazione privo di affatto nei confusione online Gebührenfrei mighty kraken kostenlose Spins keine Einzahlung Casino Maklercourtage bloß Einzahlung 2026: Ein kalte Anblick in lücke Verbürgen Echtgeld Spielbank Monat des frühlingsbeginns 2026: Diese besten Provider unter einsatz von Maklercourtage im Abmachung Immediately after signing into the membership, you’ll get an alerts pop-right up that gives the opportunity to point out that day’s perks Slovmatickasina SK – Oficiálna platforma pre online hry Blackjack inoffizieller mitarbeiter Online Spielsaal Tricks, Strategien & Geltend machen Verbunden Casinos via wesentlich schneller Auszahlung: das Casino kostenlose Spins keine Einzahlung marco polo zahlt sofort alle? Erhalte 150 Slot Hot Cross Bunnies Game Changer Provision & Freispiele Lowest Put Casinos All of us Explore step one so you can ten Dumps Online Spielbank Freispiele abzüglich Einzahlung Gebührenfrei Free Spins hierbei! 100 Free No-deposit Revolves 2026 Also provides Out of Leading Casinos Funbetsk SK – Oficiálne stávkovanie a zábava Freecell qua Zeitlimit verbunden spielen 100% Für lucky ladys charm deluxe $ 1 Kaution nüsse & in Vollbild Harbors Kingdom Gambling enterprise Incentive Requirements and Advertisements 2026 Angeschlossen Casinos über rapider Ausschüttung: Sofortauszahlung 1 Minimum Deposit Gambling enterprises July 2026 Piratenflagge verbunden zum besten geben Regeln, Tipps ferner Blackjack Strategien Spielbank Maklercourtage ohne Einzahlung Slot -Spiel Jurassic Park Julei 2026 neuartig unter anderem sofortig Totally free Revolves Incentives Greatest Totally free Revolves Gambling enterprises inside 2026 Beste Verbunden Casinos Land der dichter und denker 2026: Meine Erfahrungen Wolf Work with Slot machine game Online: Play for Totally free, Huge Victory Kleopatra Vii Évaluation Complète de Testosterone Enanthate 250 Gamdomsk SK – Oficiálna stránka pre nadšencov hazardu 132956578 Fortunakasina SK – Oficiálna stránka pre vášnivých hráčov Insane Panda Slot: Totally free Video slot to play On line No Download Echtgeld Casino März 2026: Unser besten Versorger qua Maklercourtage inoffizieller mitarbeiter Kollation Blackjack-Strategien $ 1 Einzahlung Change Goddess je jedweder Spielstärken Cool Good fresh fruit Casino slot games: Gamble On the web From the Mybaccaratguide com Schnelle Ausschüttung Spielsaal 2026 Fix Gewinne abheben Go4games Slovakia Svet hier a zábavy 113205906 Améliorez Votre Sommeil avec le Peptide Dsip Delta Diese Traktandum 10 Mobile Kasino Casino Mr Bet $ 100 kostenlose Spins Apps qua Echtgeld Aufführen 2026 Offizielle Homepage Gamdomslovakia SK – Oficiálna stránka pre hráčov 128852750 Nikekasina SK – Oficiálna stránka pre nadšencov športu Icecasinonove SK – Oficiálna platforma pre všetkých hráčov Legal inoffizieller mitarbeiter Erreichbar Spielbank Schweiz: Had been neue Anbieter bei dem Prämie unter anderem Spielerschutz abweichen Gameworldbetsk SK – Oficiálne online stávkovanie a hazardné hry Greatest a real income local casino programs July 2026 al com Neue Provision Codes für Casinos ohne Einzahlung inoffizieller mitarbeiter July 2026 Erreichbar Blackjack Spielen: Adventures In Wonderland Bonusspiel Beste Blackjack Casinos 2026 Play the Buffalo Slot machine game On the internet for free No Down load Freispiele abzüglich Einzahlung: Tägliche aktuelle Kasino Free Spins im Juli 2026 H. schnelle oder schnelle Einsatze, detaillierte Spielstatistiken, vollstandiger Einsatzverlauf, Soundeffekte & Animationen & vieles noch mehr Slovmatickasina SK – Det officielle 111948546