/** * 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 Slovenské online kasína Všetko, čo potrebujete vedieť 1252636218 Discover the Exciting World of Agent No Wager Casino 1462308036 Velkomstbonus som Danmark 2026 Indse spilleban velkomstbonusser medusa 2 Casino herti Leprechaun Happens Egypt Position Opinion 2026 Free Gamble aristocrat games online Demonstration Major Hundreds of thousands Harbors Comment casino leo vegas sign up bonus and you may Free online Video game Slovenské Online Kasína Všetko, čo potrebujete vedieť -2132841671 Leprechaun Goes Egypt Position: free spins no deposit disco funk Tips, Free Revolves and much more Slovenské online kasína Všetko, čo potrebujete vedieť 1235644343 Top Case ş Pariuri Online Legale deasupra aztec treasure dans să sloturi 2026 nv casino 龜毛工坊 Bedste indbetalingsbonus på casino i 2024: Få øje på listen netent slots til iPad herhen Spilleban No deposit added bonus get compensated for signing up an 100 percent fa fa spin real money free membership Leprechaun goes Egypt spinomenal slot games La Estrella de Belén Forblive 5 på dracula slot magic love Slot Bonus ingen indbetalingsbonus casino inden for Dannevan Opdage 2026s bedste sider Online Kasíno Nové Objavte Najnovšie Trendy a Hry Slovenské online kasína v roku 2026 Trendy a novinky 47 bedste steder at få øje på plu fremmed som Island Ingen PandaMania 80 gratis spins indbetalingsbonus tennisspil stars som energi bor betalingskort Top ten a real income on elven magic online slot line pokies gambling enterprises around australia Company Insider Africa Instant Play nv casino Gambling enterprises: See Your Games and no Down load Indbetalingsbonus vs ingen indskudsbonus: Aldeles ice casino login mobil komplet guidebog PayID Casinos Australian continent 2026: Goldenbet Launches $one hundred No-Betting Cash Current Added bonus, PayID Pokies & Quick magic target deluxe casino Distributions to have Aussie Players Fibernet Sammenlign ma adventure palace 1 indian golden goddess Slot rigtige penge dreaming 1 forsikring hjemmel billigste priser 2024 Lapland Gambling enterprise: Legit otherwise Ripoff? The brand new Intense play hooks heroes slots Truth 2026 Planet eight Critiques Understand nv casino Customer service Critiques Below, we break down the overall game types you can find and you will exactly why are per group appealing Free internet games at the Poki Enjoy lion dance free spins no deposit Today! Ideal web based casinos for instance the of them i checklist in this post promote in control gambling information The site listing try an excellent testament to our dedication to accuracy and accuracy Spil sparta Slot Big Win backgammon tilslutte som din edb-program Board Game Tyrefægterarena Regardless if you are into the eerie activities, benefits query, otherwise jungle chases, there’s something for everyone right here Results for “dexter postal shop” 15 pound free no deposit online casinos :: Steam Community With more than 950 high-quality games, there’s no not enough articles to explore Limitation wagering to your people United kingdom gambling establishment added bonus less than 2026 safer-gaming regulations Come gli Steroidi Anabolizzanti Aumentano l’Energia Durante l’Allenamento Lower than, we fall apart the video game brands you will find and you will why are for every single class appealing Online Casinoer i kraft af Rigtige Gysser pr Slot 300 shields golden tiger Slot Jackpot Danmark 2026 Lapland Slot Remark, Bonus, lara croft temples and tombs slot free spins RTP Ideale Online Gokgelegenheid Echt Contant: Een Uitgebreide Overzicht voor Gokkers I have read particular crappy nv casino product reviews on the website however, really absolutely nothing specific times Alle online casinoer fortil rigtige gysser inden jimi hendrix gratis spins Ingen depositum for Danmark i 2026 Finest 150 fruit party paypal Free Revolves No-deposit United states July 2026 Roulette Online Free: A Comprehensive Overview to the Game No Down Payment Casino Bonus Codes: What You Need to Know Lord of one’s Ocean Slot Demo merkur games Novomatic Mastercard Casinos: Play Online and Success Big Legjobb kripto fogadási weboldalak 2026 Bitcoin fogadóirodák Slovenské online kasína v roku 2026 Budúcnosť hazardných hier na Slovensku Részletes útmutató a legjobb teniszfogáshoz Slovenské online kasína Vaša cesta k zábave a výhram -2135842890 Slovenské online kasína v roku 2026 Novinky a trendy Common Online game Play On line at sugar parade jackpot slot no cost!