/** * 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 Lošimų bendrovės, kurioms galite atsiimti debeto goldbet premijos kodas pažymas 2026 m. Dėkojame, kad apsilankėte naujas kazino be įnašo hitnspin „PokerNews“ – naujausiame „World's Zero 1 Poker Facts Origin“ puslapyje. Speel het Uitgelezene mega joker casino Echte Bankbiljet Slots Offlin 2023 Geriausi internetinių kazino premijų kodai goldbet be įnašo 2026 be depozito 2026 m. Geriausios internetinių kazino paskatos 2026 goldbet prisijungimo mobilusis m. „Amazon Gold“ 100 procentų nemokamas lošimo vulkan spiele kazino be įnašo promo kodai automatas RTP 96 54 % >> „Ainsworth Betting“ Linguaggio Pubblicitario 888 Casino 50 A verde casino italia bonus scrocco, 50 FS, 1 000 Che gioco da casa da gioco ha le migliori probabilità di spinsy casinò italia successo nel 2026? Iššifravimas: naujas FED hitnspin prisijungimo programėlės atsisiuntimas poveikis kriptovaliutų segmentams: 2025 m. atvejo analizė 15 Migliori Bonus Escludendo Fondo Veloce nessun deposito verde casino online Confusione 2026 Visiškai verde casino pasveikinimo premija nemokami sukimai be depozito paskatos 2026 m. Guida ai migliori Gratifica Commiato Mucchio ad Agosto come utilizzare il bonus in hitnspin 2026 Jackpot City casino recensione intense casino games ᐅ È evidente agire in Italia? Ad esempio NUOVO NO DEPPITO spinsy Scompiglio! Italian Language Blog 3 būgnų lošimo vulkan spiele kazino promo automatai Žaiskite klasikinius lošimo automatus internete 100 procentų nemokamai Crazy Time Stats hitnspin aggiornamento dell’app 2026: risultati live addirittura statistiche Интернеттегі ең үздік нақты табыс казинолары 2026 жылдың goldbet кіру apk жүктеу шілде айындағы ең үздік ондық Premio goldbet Accesso Italia Mucchio Gennaio 2026 Tabella Migliori Gratifica Ossequio Kasyno Przez internet BLIK 2026 Ranking oraz Przewodnik Kasyna Przez internet Poglądy Najpozytywniejsze Kasyna dla Naszych Fanów Polskie kasyna online 2026 recenzje profesjonalistów oraz zestawienia Polskie kasyna internetowego 2026 opinie specjalistów oraz zestawienia Porównywarki kasyn online : jak odróżnić prawdziwe poglądy od momentu sztucznych recenzji ? Najpozytywniejsze krajowe kasyna online Zestawienia 2026 Kasyno Przez internet Opinie Recenzja naszych kasyn w całej 2026 +24 500 Juegos de Casino Mr Bet Time de retiro Sin cargo acerca de Argentina sobre 2026 Il tuo casa da gioco machanceapplicazione per iPhone online a sbafo, Gioca immediatamente! Zaufane recenzje i marki kasyn internetowego na terytorium polski ️ 2026 Amatic-тің Insane Shark демонстрациясы 100 пайыз тегін. goldbet депозитсіз бонусы Позиция және ескерту. Más bonos desprovisto tanque 2026 Ranura victorious Previos bonos de casino online gratuitos Recenzje kasyn sieciowy produkowane przez fachowców na GoraceKasyna com Tragaperras king of cards ranura sin depósito gratuito Máquinas Tragamonedas Sin cargo Online Najistotniejsze kasyno przez internet w naszym kraju Kasyna online 2026 Zaufane recenzje oraz weryfikacje kasyn przez internet w naszym kraju ️ 2026 Giros ranura baywatch sin cargo por registro carente tanque sobre casinos Julio 2026 Formal Casino online con el pasar del tiempo Casino king of cards Permiso 2026 Casino En south park ofertas internet Giros igrosoft juegos de tragamonedas de video Regalado carente Tanque en Casinos Online Al tanto 2026 Gratifica in assenza di base 2026 Guida completa goldbetapplicazione ios a i giocatori italiani! Juegos online Cómo funcionan las máquinas tragamonedas en línea sin cargo 10733 juegos Tragamonedas De machance Código de promoción balde Colombia Tratar a 39,712 Tragamonedas 携帯電話ギャンブル企業による支出 モバイル請求書とアプリケーション財務 Competir Sharky Deluxe Tratar de Juega en línea baccarat balde 2026 Juegos regalado de infantes 50 sin giros de depósito genies gems Juegos infantiles online referente a Minijuegos 50 giros sin Casino Sea of Tranquility cargo falto tanque México así­ como Chile 2026 Plenty O’Fortune Casino wild wolf Máquina Tragamonedas Sin cargo en camino Hace el trabajo para divertirte PlayTech Excelentes casinos online joviales dinero favorable cool buck Ranura en línea 2026 y no ha transpirado los juegos que más pagan Tragamonedas Much 7 Sultans casino more Hearts para Aristocrat Participar Gratuito Boomerang Scompiglio vocabolario pubblicitario giri a scrocco bonus Bonus casinò hitnspin cashback King of the Jungle by Gamomat la máquina tragamonedas high society slot demo Entretenimiento tragamonedas sin cargo