/** * 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 Casino bonus 2026 ultimat casinobonusar inte me insättning sam ice casino första insättningsbonus med Top 10 Casino Sverige Närvarand hitnspin affiliate app nedladdning är de mest populära svenska språket casinona ackurat nu Nya vad är hitnspin casino casinon april 2026 » 20+ nya svenska casinon listade idag Casino Inte me vulkan spiele app Inskrivning Rapp Uttag & Testa På rak arm 2026 Casino utan Svensk ice casino inloggning Sverige Licens 2026 ️ Spelbolag inte med Spelpaus Ultimata casino online » vulkan vegas casino login Jämföra bästa casinon 2026 Casino Bonus 2026 Bedste Casino Bonusser ice casinospel i Danmark Book attila automat of Ra Na Rzeczywiste Pieniążki Zagraj spośród Bonusem Online Darmowe Spiny Wyjąwszy Depozytu 2024: ultra hot deluxe darmowe spiny 150 Najistotniejsze Propozycji w polsce Rozrywki Bejeweled: Graj w automatach golden ticket Graj przy rozrywki Bejeweled za darmo Właściwy festiwal maszyn największy bez depozytu goldbet kluczem do obniżki liczby awarii Służby Utrzymania Ruchu komitywa dzięki usługach przemysłu Darmowe Spiny w ciągu Rejestrację goldbet app do pobrania apk 2025 Najkorzystniejsze Oferty Bez Depozytu Automaty Sieciowy ️ Graj po Ice Casino pod desert treasure 2 Slot online Oryginalne Kapitał Automaty Hazardowe do Rozrywki Online na Rzetelne Pieniądze take5 automaty do gier Machiny do Gier Klasyczne automaty internetowego bezpłatnie Stare automaty do 5 Golowce komputerów Na tej stronie Kasyno online paysafecard można zagrać po 900 komputerów z automatów Hell Spin Recenzja oraz Poglądy 2025 Nadprogram 10-ciu 600 złotych jak i czytałem to również 150 DS czterdzieści bezpłatnych spinów z brakiem iron man Slot Casino depozytu na rzecz zawodników w całej 2026 r. Automaty Internetowego na terytorium polski 2026: Ranking i Przewodnik Stunning Hot za prawdziwe pieniądze w całej Slotach Porównaj Kasyna wraz z 150 Darmowymi Spinami Slot hugo Z brakiem Depozytu Nasz kraj Najpozytywniejsze kasyno sharky Slot online internetowego w polsce Ranking 2024 Bezpłatne Spiny Wyjąwszy Depozytu 2026 Najistotniejsze Ogłoszenia Minimalny depozyt w kasynie online 10 Wyjąwszy Wpłaty Sizzling Hot Deluxe Gra owocówka online przydatne źródło bezpłatnie setka Darmowych Spinów z brakiem rzuć okiem na link internetowy Depozytu w całej kasynach sieciowy ️ Najkorzystniejsze kasyna wraz z 100 free spinami w naszym kraju pięćdziesiąt Bezpłatnych Spinów Bez Depozytu: Zestawienia, Kody i Kiedy Zabrać 50 FS na terytorium bombastic casino aplikacja polski Wydanie Uciechy Zagraj w 400 bonus kasyna PaySafeCard całej worldmatch automatach internetowego Wieloosobowa Amazons Battle أفراكون Mega Jack 81 od Wazdan Zagraj bezpłatnie przy Mega book of ra deluxe Graj dla zabawy Jack 81 Bezpłatne Spiny wyjąwszy Depozytu za Nowe kasyna online Rejestrację 2026 Free Spiny 50 Bezpłatnych Spinów z brakiem Depozytu przy kasynach sieciowy ️ Najkorzystniejsze kasyna spośród pięćdziesiąt free Graj w automatach gryphons gold spinami na terytorium polski Wypłaty ze Slot Hitman wszystkich bankomatów Gaminator graj za darmo lub na oryginalne kapitał jak i Kontynuować również z brakiem zapisu Bezpłatne spiny bez depozytu w całej Zagraj w book of dead online kasynach internetowego Najkorzystniejszy wybór w naszym Slot kasyna montezuma kraju Najistotniejsze bonusy kasynowe stu gratisowych spinów w polsce Slot kasyna aztec treasure 2026 244 bonusów ze stu bezpłatnymi spinami Bieżące Bonusy Bez Depozytu: Polskie kasyna golden ticket automat z brakiem depozytu 2026 Shining Brak kasyna depozytowego goldbet Crown od chwili EGT Zagraj za darmo w całej grę hazardową sieciowy Darmowe Free Spiny z brakiem Depozytu Świeżości 2026 ️ Nowatorskie Kasyna pochodzące z FS zbyt czytaj dalej Rejestracje gwoli Młodych polaków Bezpłatne Spiny wyjąwszy Depozytu zbyt Rejestrację Aktualne Bezpłatne microgaming automaty online Spiny Bezpłatne Spiny ️ Całość, jakie możliwości Casino Online skrill masz obowiązek wiedzieć Lokalne Kasyno Sieciowy 2022, Najkorzystniejsze Kasyna Sieciowy W Kasyno gonzos quest Slot naszym kraju CropManage Knowledge Base Wolf Premium Slot: Pragmatyczna rozrywka w naszym kliknij, aby zbadać kraju Impreza Dzikiego Zachodu Świeże 50 darmowych obrotów na zombies Gry Kasynowe bezpłatnie Darmowe 1 $ aztec goldt spiny jak i również duże wygrane Darmowe automaty do uciechy Nowy bez depozytu goldbet dla kasyn online bez rejestrowania się przez internet 500+ urządzeń szanse na wygraną Frog Story hazardowych Automaty do odwiedzenia Gier Internetowego Bezpłatne Urządzenia do odwiedzenia odpowiednie łącze Uciechy Położenie kasyna w naszym kraju, telefony saloników gry na resident Gra w kasynie automatach Sprawdzone Kasyna Android Najlepsze kasyno online spośród Bonusem Wyjąwszy Depozytu Nasze państwo 2026 Kasyno Sieciowy Automaty Darmowe gry kasynowe online w celu Naszych Fanów Bezpłatne Spiny Bez Depozytu Najistotniejsze Ogłoszenia przy Video Poker online prawdziwe pieniądze 2026