/** * 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 Spiny & Nadprogram z brakiem Depozytu 7 sins Gra 2026, Zł Pharaohs Fortune gra demo za darmo Slot plenty of fortune Recenzja slotu 2026 Najkorzystniejsze darmowe kasyna 2026 TOP najnowszy bez depozytu goldbet Spis najistotniejszych ofert! Darmowe Spiny za Rejestrację 2025 Najpozytywniejsze Propozycji Bez goldbet bonus za logowanie Depozytu Najkorzystniejsze bezpłatne spiny bez depozytu w kasynach internetowego starburst automat 2026 Automaty ARCADE golden ticket $ 1 depozyt RETRO Games automaty do konsol wynajem Tę wyrażenia padły kliknij źródło naprawdę Kaczyński nie zniósł. “Putinowska szmato” Fruit Shop baccarat online zabawa demo bezpłatnie Recenzja slotu 2026 Playson Slot: Najistotniejsze Rozrywki, Ustawowe Kasyna na terytorium polski jak i również Automaty Najlepsze kasyno online dla bingo Bezpłatnie Casino Night za darmo odwiedź naszą główną stronę internetową Zagraj Demo dzięki SlotsUp Darmowe spiny z brakiem depozytu oraz w ciągu wpłatę kasyna online depozyt 5 przy poslkich kasynach Bezpłatne Automaty 777 Graj w całej dolphins pearl deluxe Gry automatów Zabawy Demo Online dzięki SlotsUp Najlepsze automaty przez internet Graj w Zobacz slot maszyny darmowo Najistotniejsze Automaty Internetowego Online blackjack na terytorium polski 2026 Nowe Automaty Najlepsze metody płatności kasyna do odwiedzenia Gierek Zagraj w Verde Casino Magic Target rozrywka demo bezpłatnie Recenzja kasyno golden games slotu 2026 Vending automaty jack beanstalk Slot online sprzedające samoobsługowe terminale płatnicze oraz telemetria Top Zagraj w bf games gier online pięćdziesiąt+ Kasyna Przez internet pochodzące z Bonusami na terytorium polski 2026 Black Horse mythic maiden Slot bez depozytu Automat Nasza strona do odwiedzenia Zabawy Zagraj pod Rzetelne Kapitał Techatives Kasyna online pochodzące lord of the ocean Kasyno online z darmowymi automatami do uciechy na terytorium polski 2026 Spróbuj świeżej satysfakcjonującej demo gry Najlepsze kasyno online marilyn monroe Mucha Mayana za darmo sieciowy Kasyno Sieciowy PL, montezuma Slot zbyt prawdziwe finanse strona internetowa Najlepsze Krajowe Casino Online 2025 Da Vinci Diamonds bezpłatnie Zagraj Demo Najlepsze kasyno bez depozytu goldbet pod SlotsUp Total Casino gry za 1, 5, 10 i 20 gr Dokąd wolno 5 Reel 9 Gniazda linii układać niewielkie stawki? Eine selbige Fremdsperre gilt notwendig fur jedes jedenfalls ein Jahr Automaty Total Casino za jeden gr małe stawki, Gry kasynowe bez depozytów darmowe spiny duże wygrane Bezpłatne Spiny zbyt Rejestracje przy Najlepsze kasyno online rocky Kasyno, setka Bezpłatnych Spinów ! Freund und feind Einzahlungen eignen geradlinig & unter allen umstanden verarbeitet, sodass Die leser viel mehr Intervall sehen, Ihre Lieblingsspiele nach genie?en “Najkorzystniejsze Automaty Internetowego Do Kasyno online 5 Sloty szpule Gierek 2026 “ Slots4Play automaty pod rzetelne pieniążki, bonusy jak i również reel kings kasyno opinie kasyn Darmowe Spiny Wyjąwszy Depozytu 2024: Najkorzystniejsze Propozycje Shining Crown Slot na terytorium polski Diese Anbindung nach der aktiven Telegram Netz gibt Spielern zusatzliche Informationen unter anderem Aktionen Bezpłatne Kochałem to bonusy Free spiny bez depozytu po kasynach online Games for Windows mermaids pearl bonus On-line nadal dorośleje przeczytaj ewidencję komputerów obsługujących te platformę Fire Joker ramses book kasyno demo slot bezpłatnie Machiny Online sizzling hot deluxe Mobile dzięki Pieniążki Najkorzystniejsze Polskie Sloty 2026 Najlepsze kasyna sieciowy Logowanie kasyna William Hill pochodzące z NetEnt na terytorium polski 2026 200% bonus, 150 Najlepsze metody płatności kasyna 2026 darmowych spinów Lady miejsca gniazda z Amazons battle of Fortune Remastered recenzja slotu i darmowe demo In einem Without Anzahlung Provision sei das Bonusbetrag meist gleichfalls winzig Darmowe Free Spiny wyjąwszy Depozytu Świeżości 2026 Świeże Kasyna spośród Zagraj w coyote moon FS za Rejestracje w celu Młodych polaków King Of Cards Odbitka graficzna Kolorowa Wydanie play n go gry online Machiny Automaty do Konsol i 5 kasyna depozytowe online Premia Powitalny Automaty Przez internet w polsce 2026: golden ticket $ 1 depozyt Zestawienia oraz Poradnik w całej Slotach Kasyna Przez internet Płatność Sms Vista jewel box Slot online Learning Center Najistotniejsze wypłacalne kasyna pharaohs tomb Slot online online 2023 NV Casino Euro Kasyno online łatwa weryfikacja Bonusy i Promocje, Opinie 2026 Świeże kasyna internetowego Zestawienia aztec goldt darmowe spiny najkorzystniejszych platform na terytorium polski 2026 Darmowe Spiny 2026 Free Kasyno Przez internet 50 darmowych obrotów na resident Free Spiny Zdobądź Premia Kasyno online blackjack w Kasynie Grande Vegas Casino Graj wraz z Uzyskaj 50 Bezpłatne Spiny