/** * 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 BruceBet Casino 2026 Wszystko o Bonusach i Zakupach 2026 2026 Free Merry Xmas Slot Playson Die besten Echtgeld-Casinos inoffizieller mitarbeiter Web 2026 getestet Bonusy bez Depozytu Kasyna Najlepsze Oferty 2026 Darmowe Aussie players rejoice: Why PayID Pokies Australia is the top choice for online gaming Traktandum 10 Angeschlossen Spielsaal Österreich: 10 Beste Verbunden Casinos 2026 Beste Echtgeld Casinos & Spielotheken im Momentaufnahme-Untersuchung 2026 Have fun with the Secret Stone slot during the HotSlots! Spilakassar á netinu Gamble 9769 Ókeypis vulkan vegas innskráningartölva spilakassar á SlotsWolf.com Zodiacs Sportwetten ohne LUGAS 2026 Beste Wettanbieter inoffizieller mitarbeiter Untersuchung Fortunate Twins Real-Go out Analytics, RTP and SRP STATERA Online Shop Die gesamtheit für jedes Dein E-Velo As opposed to relying purely to the danger, black-jack will bring someone a bona fide opportunity to change the lead as the out of wise choices Better Totally free 10 No deposit Gambling establishment Web sites to own Bingo and Ports within the United kingdom Lord of one’s Sea Internet casino Play for 100 percent free Live Dealern Verbunden Casino Spiele Test C 250 pour optimiser votre performance sportive Professionals get to pick and choose of certain icons on their display trying to find killer incentives. It offers brightly colored and mobile anime picture which can be thus fun, you could potentially forget about you’re also playing aside your deals! Gather around, folks, and you will let me make it clear from the Fortunate Larry’s LobsterMania – the net position game one to’s got it all the – cartoon-layout picture, an aquatic theme, and many serious enjoyable! Although not, understanding the paytable, and you can games has, and you can establishing wagers wisely can raise your own gambling experience and you will boost your potential efficiency. They claims a pursuit one's while the bubbly because the ocean, with a prospective payout one's as large as a whale. The video game impacts the best balance anywhere between chance and award, with high-limits betting options and an excellent tantalizing selection of added bonus rounds. Slovmatickasina SK – Oficiálna platforma pre online hry Schreibt man “welches beste groß unter anderem klein? Orthografie wie geschmiert festgelegt Leprechaun Goes Egypt because of the Playn Wade Spin 100 percent free Revolves, Tomb Added bonus and Crazy Multipliers Beste Krypto Casinos 2026 im Test & Kollationieren Romania’s Gambling Laws: Magic Advice to have Profiles Romania Try Slotmafia Casino Safe and Legal for Australian Players Cum măcar face utilizarea platforma noastra mobila să merge?i on ea Software-ul RNG Determina?i in cazul in de pentru?tigi Sala să opera?ie pierzi în rotirea respectiva, in camera aleatoriu Self-exception apps do well as the best means thank you so you can and that an addiction to gambling would be limited Comparat printre asta întreprindere get bune slot cazinouri în fluid Beste Echtgeld Erreichbar Casinos 2026: Hierbei spielst du echte Slots Cum sortiment incadreaza in sectorul mai larg al cazinourilor de au tombole Out au SUA Queen of your own Nile Realize Our very own Position Remark Mostbet Slovenské SK 2026 Vzestup Online Stávkovania Go4Games Slovakia Oficiálne Hry a Eventy pre Každého Neue Verbunden Casinos 2026 Beste Brandneuen Casinos im Siebenter monat des jahres Slovmatickasina SK – Det officielle 111948546 Monacobetcasinosk SK – Oficiálne online kasíno 106932718 Erster Erreichbar Kasino Maklercourtage im Julei inoffizieller mitarbeiter Abmachung Karaoke Harbors, A real income Video slot and Free Play Demo Go4games Slovakia Svet hier a zábavy 113205906 Fortunakasina SK – Oficiálne herné miesto pre každého Book of Ra: Unter einsatz von Echtgeld & Demonstration kostenlos spielen Forest Jim El Dorado Demo Enjoy Position Game one hundredpercent Free Casinos bloß Verifizierung 2026 Unbekannt vortragen abzüglich KYC Icecasinosk SK – Oficiálne online kasíno 135680531 Zodiac Local casino Canada Comment 2025 Could it be Well worth Their step one? Nikekasina SK – Oficiálna stránka pre všetkých fanúšikov 121390593 Nikecasinosk SK – Oficiálna stránka pre online hazardné hry 131246281 Willkommensbonus Schenkelklopfer-Angebot durch 100% solange bis 100 und so weit wie 150 Freispiele je Neukunden Yahoo and google Perf-Max