/** * 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 Cubis 2 Für nüsse Zum i24Slot casino login besten geben A casino web site should have an ideal choice off on the internet online casino games to relax and play Pin Up Casino in Bangladesh: Fast and trusted payment options for players Exploring the World of Hayalbahis A Comprehensive Guide 1494576687 When searching for your ideal extra, listed below are some of the biggest things to continue an excellent eager eyes to the The most typical illustration of a hand in a credit card applicatoin venture applied out-by their advantages is the free revolves enjoy give What is the Most readily useful Game to experience within an online Regional local casino? ?? An educated Real time Broker Gambling establishment: Dumb Gambling establishment Казино Норм На Деньги Will get A Redesign Καζίνο από 10 ευρώ Πώς να Απολαύσετε την Παιχνίδι χωρίς Υπερβολικές Δαπάνες Free Spin Gambling Enterprises: A Comprehensive Overview to Playing and Winning Mobile Casino Games Prelievi anche depositi: i metodi di corrispettivo accettati ?Posso puntare a euro sui casinò online Svizzera? Winning Strategies for Gambling with Bankonbet Greece: What the Platform Offers Utforska de bästa casinospelen 2026: slots, bordsspel och unika funktioner Beste Wettanbieter ohne OASIS: Sicher und schnell auszahlen – so funktioniert’s Gareggiare sopra contanti escludendo base: quale funziona? Che ammettere il bonus ossequio dei sterminio online Tasse sul casinò online al di al di là dell’UE Ho aderente circa meccanicamente, progetto dalla curiosita prevalentemente Non ce l’hai e ancora vorresti richiederla? Think Your Norm Casino Слоты Is Safe? Nine Ways You Can Lose It Today The ultimate guide to high RTP games at Duel Casino: play smart and win Exactly how we Viewpoint The big Uk Casino Internet Strategies for Choosing the best Anticipate Added bonus Choosing the right Gambling enterprise Website to you personally Das bekannte Softwarehersteller ist unter langer Zuruckhaltung vom Glucksspielmarkt wiederum hinein ausgewahlten Casinos nach finden Sera verlangt sera Spielern, einige Spiele auszuprobieren & herauszufinden, pass away ihnen an dem wichtigsten liegen Sprich zwar nicht, sic Die kunden nichtens untergeordnet mustergultig qua Fiat-Wahrungen erstatten konnten Unser Bonusgeld vermag sodann postwendend fur Einsatze verwendung finden Gamer innehaben selbige Gelegenheit, Einzahlungslimits ferner Zeitbeschrankungen hinten vergehen Explorando el Mundo del Juego en 10bet Una Guía Completa They might be a well-recognized option for people that have a giant money, while they could potentially own larger masters Mobile places allows you to make use of your mobile to help you help you deposit and you will repay it on your own 2nd mobile phone expenses Mobile dumps makes you make use of mobile phone so you’re able to put and pay it off on your second portable costs Bezpieczne logowanie i rejestracja w Spinamba Casino: co warto wiedzieć? Because of the exploring all terms and conditions, we discover and that free spins hold real really worth Join the action at Fast Withdrawal Casino UK: Your path to real money and Die Erscheinungsform des Casino Maklercourtage abzuglich Einzahlung ist und bleibt ebendiese mutma?lich beliebteste Einige Casinos verheimlichen wichtige Bonusbedingungen in den Allgemeinen Geschaftsbedingungen (AGB) unter anderem nach Unterseiten Top Online Casinos That Approve Neteller Deposits Free Online Gambling Establishment Gamings: The Ultimate Guide Scopri Come Acquistare il Bonus nel Book of Dead Talletusbonus Ilman Kierrätystä ja parhaat kasinotarjoukset vuonna 2026 — Talletusbonus Ilman Kierrätystä Online Winner Casino Discover Your Winning Opportunities Navigating King Casino Online without the Usual Confusion Test Post Created In Alpenrepublik Umsetzbar Kasino Über Handyrechnung Saldieren ist RoyalGame sicher 2024 5 Euro Telefonrechnung mit Kreditkarte bezahlen Prämie Bloß Einzahlung In Deutsche Casinos