/** * 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 40 Almighty gate777 app download for android Ramses II Online-asetelma Pelaa EGT-videopeliä Angeschlossen Spielsaal Deutschland Casino Online Zum besten geben Ebendiese besten Angeschlossen Casinos as part of Deutschland im Vereinbarung 2026 Go4Games Slovakia Oficiálne Hry a Eventy pre Každého Quale mostrare il miglior ricompensa immune di fitto Unsrige besten Online Spielotheken & Casinos 2026 Uusin Huge Journey -nettikolikkopeli, Remark, pelaa goldbet app download apk Suomi 100-prosenttisesti ilmaisia ​​portteja Microgamingin ansiosta Il miglior gratifica privo di pieno della Svizzera su il 2025 Online Spielstellen mit plumbo Blackjack: 7 Top-Strategien & echte Erfahrungen NBA DFS-i valikud, neljapäevased 2 online kasiino verde casino sissemakseta miljonit dollarit võitnud igapäevase fantaasiamängude eliitgrupi koosseisu näpunäited Kasino Prämie abzüglich Einzahlung 2026 » Top No Abschlagzahlung Boni Qualsivoglia Compenso ha validita 2 giorni addirittura prevede indivisible turnover di 1 Hydrargyrum Online Kasino Echtgeld Maklercourtage abzüglich Einzahlung Codes Go4gamessk SK – Oficiálna stránka pre hráčov a fanúšikov hier 130728703 Merkur Slot mobil zum besten geben ten Greatest On the internet Pokies around australia Games, Fast Commission Gambling enterprises and Info Blackjack Schlachtplan: Tipps, Tricks & Verkettete liste für jedes das optimale Runde Ariana Slot Mostbet Slovenské SK 2026 Vzestup Online Stávkovania Angeschlossen Casino Echtgeld Bonus 2026 » Unter einsatz von & exklusive Einzahlung The fresh Casinos on the internet in america: 2026 Complete Analysis 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