/** * 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 Játssz Pompeii játékot teljesen ingyen ice casino bónuszkód a demó verzióban, és olvasd el a véleményedet Keno Alive Online USA 2026 Játssz és nézd a Keno ice casino bejelentkezés mobil Alive-ot online Jobb 100 százalékban ingyenes Revolves Szerencsejáték legújabb befizetés nélküli hitnspin vállalkozási ösztönzők 2026 Győzelem Valódi pénz Pontos 10 legjobb online nyerőgép valódi befizetés nélküli goldbet pénzzel 2026-ban, kipróbálva és tesztelve Besplatne vrtnje Bez depozita Poticaji Dobici Pravi prihod 2026 Najbolja poduzeća za kripto kockanje s trenutnim isplatama u 2026. godini Navigating the best betting sites in Australia: Essential tips for choosing trusted bookmakers Recenzije najboljih stranica za Promo kodovi vulkan spiele kasino za pravi novac Najbolji online Promo kod za kasino vulkan vegas kasinoi za pravi novac 2026. Izvod o potrošnji verde casino oklada putem mobilnog telefona za kockarnice 2026.: Put By Mobile lokalni kasino Top 10 tvrtki za mobilno kockanje koje nude besplatne verde kasino Hrvatska vrtnje, također nudi 2026. eCheck Kockarnice Sjedinjene Američke Države eCheck vulkan vegas Hrvatska bonus Instantaneous Razmislite o kockarnicama Bolji američki goldbet mobilni kasino dijeljeni kasini u SAD-u: Bolje web stranice Amex kasina 2026. Najbolja isplata zbog mobilnih kasina u vulkan spiele apk prijava Velikoj Britaniji 2026. Bez kreditne kartice. Від плану до перевіреної публікації — 085 Bolji online Aplikacija ice casino kasina u 2026.: 15 najboljih web stranica za pravi novac Recenzija Asgard Position Games Ideje za vulkan spiele aplikacija za iPhone uživanje पोम्पेई की स्थिति पर टिप्पणी और 100 प्रतिशत निःशुल्क डेमो माइटी फू लोकल कैसीनो पोर्ट्स वीडियो गेम ऐप्स इंटरनेट पर खेलें Put Definition, Versions, and you microgaming games can Analogy $10 Minimum Deposit Gambling casino Star Spins mobile enterprises 2026 Better $10 Deposit Bonus Codes Play at the top casino Spin Palace no deposit bonus $1 Minimum Deposit Casinos Jack Hammer Put 5 Rating 100 100 percent free Revolves Greatest vegas plus app download apk £5 Minimal Put Casinos within the Uk Lifeless otherwise Live step three: Desired Position Play 96 jet bull casino 03% RTP, 66666 xBet Maximum Earn Play the Davanci Expensive diamonds Pokies Starlight Princess online slot IGT’s greatest Position Online game Da Vinci Diamonds Twin Gamble Ports Wolf Pack $1 deposit Enjoy Gambling games Online Danger High how do i download mr bet on my android voltage Slot Remark & Information, Totally free Revolves, RTP Cricket Star Totally free Slot Trial tres amigos $1 deposit Online game Comment 2026 Coinbase Global, no deposit free chips casino Inc Coin Inventory Rates, Development, Estimate & Records Coin play Mugshot Madness Master Free Spins Today August 2026 Every day Upgraded Website links Cleopatra free spins no deposit Beetle Frenzy 1963 flick Wikipedia Christmas time Jackpot Position Fool around with Bitcoin top casino online sites otherwise Real cash Suuret palkkiolliset nettikasinot goldbet kasinon talletusvapaat promokoodit Yhdysvalloissa ja parempia oikean rahan kasinosivustoja meille kaikille Have fun with the Best Xmas Ports Come across Your online pokie machines favorite Christmas time Slots On line and you will Play for 100 percent free Choy Sunshine Doa Slots Review in the 2026 Which have monopoly free 243 A means to Win Free Spins No-deposit Local lucky 88 slot games casino Incentives August 2026 Fundamentals of Mobile Slots Apps Heart Courtroom Online slots casino Mandarin Palace games Top ten Us Online casinos roman legion slot the real deal Money Gaming in the 2026 No-deposit Bonus wings of gold slot play for real money South Africa Gambling enterprises Checked 2026 100 percent free Spins No Put & No Wagering $1 Mustang Gold Criteria 2026 Minimal Deposit Casinos on the internet Updated August the sites 2026 Sydän- ja verisuonijärjestelmä Forest-videokolikkopeli gate777 talletusbonus Nauti ilmaisesta Ash-pelistä netissä Ports Zimpler Casinos Uk Casino Having online casino Video Poker Zimpler 2026 £5 Put Local casino Internet verde casino login registration sites: Open Totally free Revolves & Extra Currency Uk 2026 Personal 5 Pound Also offers For every play regal withdrawal United kingdom Casino Online crazy monkey slot machine Online casino games Trusted Gambling establishment Incredible Hulk $1 deposit Playing Book to possess 30+ Decades Finest PaysafeCard Web based casinos for all of us Lucky Rabbits slot Participants in the August 2026