/** * 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 Darmowe Online Automaty do Gry Bez Pobierania i Instalacji: Ostateczny Przewodnik Kazinotë më të mira me të ardhura reale në internet Faqet më të mira të kazinove lokale në Shtetet e Bashkuara brenda vitit 2026 Faqet e internetit të lojërave të fatit me rëndësi loja më e mirë verde casino financiare: Ku njihet Blackjack Online: Rregullore, vulkan vegas kod promo kazino pa depozitim Metoda dhe ju mundeni Lojë plotësisht falas 2026 Faqet më të vulkan vegas Shqipëria bonus mira të lojërave të fatit në internet për para të vërteta, korrik 2026 Shpenzoni me telefon celular pa depozitim verde casino Kazino lokale 2026 Më mirë të paguani nga faqet e internetit të kazinove mobile Stimujt më të mëdhenj të vulkan vegas bizneseve të lojërave të fatit pa depozitë që pritej të kishin në korrik 2026 Najlepsze Krajowe Kasyno Sieciowy 2026 Kazinotë me Depozitë Zero Minimale në internet në Shtetet e Regjistrimi i hyrjes në verde casino Bashkuara të Amerikës, Vende me 1 dollar 2024 Najnižja hitrost mobilnih storitev v Pakistanu Triple Twice Diamond Trial od IGT verde casino promo kode Igraj brezplačno Spletne igralnice 2026 Aplikacija verde casino Najboljše spletne igralnice za pravi denar Hitro osvojite sto brezplačnih vrtljajev brez verde casino depozita, 100 odstotkov, pozdrav, dodan bonus Bonusi igralnic brez depozita 2026 goldbet stara različica prijave 100-odstotno brezplačne spodbudne kode Lepšie webové stránky s blackjackom online v Spojených štátoch Hrajte blackjack online Greatest Online casinos Usa 2025 A real income, Bonuses & The new SitesBest United states Casinos on the internet 2026 Front side-by-Side Research Better Casinos on the internet within the Malaysia 2026 Respected Local casino Malaysia 10 Finest Real cash Web based casinos for Us Professionals from inside the 2026 Greatest Gambling games within the 2026 Best Malaysia Online casinos 2026 Trusted Gambling enterprises when you look at the Malaysia Top Online casinos when you look at the Malasya Trused Casinos 2026 Most readily useful Web based casinos for real Money 2026 Most readily useful Timely Commission Casinos on the internet Us 2026 Instantaneous Withdrawals Gamble twenty-four,000+ Online Casino games Zero Install On the internet Fish Desk Games Live Dragon Tiger Finest Gambling games Užite si bezplatné Bonusy verde casino Slovensko pozičné hry s nulovým stiahnutím a bez registrácie Er det mulig å vinne stort i kasinoer? Najlepšie online porty s reálnym ID ID ice casino príjmom, najlepšie pozície na hranie videohier v roku 2026 Najlepšie kasína Neosurf v Registračný bonus vulkan vegas Austrálii 2026 a bonusové kódy Vychutnajte si demo promo kód pre goldbet automaty verziu pre skutočnú menu Nízka promo kód pre verde casino automaty mobilná sadzba v Pakistane Kasína goldbet promo kód s káblovým prenosom Lepšie stimuly pre hazardné hry s goldbet prihlásenie Slovensko najskorším vkladom – vylepšené v júli 2026 Від плану до перевіреної публікації — 085 Webové kasína 2026 Najlepšie online kasíno za skutočné peniaze bez vkladu goldbet online kasína o skutočné peniaze Aplicaciones sobre Android acerca casinos con depósito de $ 1 de Google Play Tratar en The Alchemist en modo demo 500% la máquina tragamonedas lucky ladys charm deluxe de balde Best Tragamonedas Gratuito Sin Eximir king of the jungle Play de tragamonedas por dinero real así­ como Desprovisto Registrarse Giros Gratuito: Qué Resultan desplazándolo hacia el pelo Sin depósito mafia casino en línea Cómo Funcionan 2026 Giros Gratuito falto Depósito referente a Casinos Online Al columbus deluxe Ranura en línea tanto 2026 Preferované porty a hazardné hry >> Stávkujte Stiahnite si najnovšiu verziu aplikácie goldbet 100 percent zadarmo Administración Tributaria: Gestiones presentar declaración Tipo 500 Impuesto en la Alquiler de la gente Corporales. 88 fortunes Ranura en línea De Najkorzystniejsze Kasyna Sieciowy Top 10-ciu Kasyn Przez internet w naszym kraju 2025 Najkorzystniejsze Kasyna Sieciowy w naszym kraju Zestawienia Kasyn 2025 Ranking Kasyn Online 2024 Top 10 Kasyn internetowych w polsce Bono William Hill Casino 100% incluso doscientos así­ como 50 giros de Ranura de bonificación million dollar man balde Najistotniejsze Kasyna Sieciowy w naszym kraju 2026 Najpozytywniejsze kasyna online w polsce 2026 ranking Gry kasynowe Nasze państwo 2026 TOP osiemnastego kasyn online