/** * 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 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 Neue Westfälische: Aktuelle Neuigkeiten nicht mehr da OWL Kostenlose Angeschlossen-Spiele push gaming Casino -Spiele nach CrazyGames Letter vortragen! Pouvoir de la Testostérone avec Tren A 100 Triple Diamond Harbors, Real money Video slot and Free Play Demonstration Tippmixprokasina SK – oficiálna stránka pre online stávky a kasíno Nikecasinosk SK – Oficiálna stránka pre online hazardné hry 131246281 Neue Angeschlossen Casinos über Provision exklusive Einzahlung 2026 Nachfolgende kalte Erfahrung nach einem Werbeplakat Fortunakasina SK – Oficiálne herné miesto pre každého #step one Internet casino Publication for Players the world over! Eye of Horus Casino medusa 2 » Kostenlose Demo & über Echtgeld spielen Slovmatickasinask SK – Oficiálna stránka pre milovníkov matematiky Synottipslovakia SK – Oficiálna stránka pre stávkovanie a hry Instantaneous Detachment Casinos Australia 2026 Quick Paying Gambling enterprises Monacobetslovakia SK – Oficiálna stránka pre stávkovanie 116128390 Synottipslovakia SK – Oficiálna stránka pre zábavu a stávkovanie 1513779000 Koi Princess Der NetEnt Casino Winner Durchlauf über alleinig Provision Features Krypto Casinos 2026: Nachfolgende besten Bitcoin Casinos im Test Tippmixpro Slovakia Všetko, čo potrebujete vedieť o športovom stávkovaní klicken Schreibung, Begriffsbestimmung, Wichtigkeit, Wortforschung, Synonyme, Slot King of the Jungle Beispiele MyBet Erfahrungen 2026 Casino Untersuchung via Schätzung Finest Gambling establishment Internet sites for all of us Professionals Heilquelle & 50 kostenlose Spins Odin Dampfbad Ostfriesisch geniessen Abzug Ingiuria tra slot premio in assenza di fondo 10 euro e gente importi Che razza di trovare il miglior ricompensa libero di tenuta CONVIENE Agire Volte Compenso SULLA Inizialmente Contraccambio? Che trovare il miglior premio senza culmine Come acquistare il riconoscimento senza contare oscuro per Svizzera? Lapland local casino playamo withdrawal gamble Tomb Raider video slot Ports Are they On line costs-totally free otherwise Real money Norway EN Depositi ed pagamenti nei casinò online AAMS Betano Slots Provision bloß Einzahlung No Vorleistung Promo Eye of Horus kostenlos vortragen ice casino login app download Religious gratis testen! Come svelare il miglior onorario privo di in fondo Synottipkasina SK – Oficiálne informácie o online hazardných hrách