/** * 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 Juega Gratis Burning Chilli X Slot Machine A La Tragamonedas Gg Coin Bônus Criancice Fortune Circus 150 rodadas grátis Assento Sem Casa Casino 2023! Bônus Sem Depósito Como Melhores Alternativas Cassino E slot fruit shop Esportes Play Fruit Cocktail Online For Free And Hit The Gold Slot sem bônus de depósito Read Review On Slotsup Jogue Big Bass Bonanza Símbolos 777 Surge Slot Por Algum Efetivo Fortune Five Slot, Teste, dracula Slot grande vitória Análise Football Casino paypal Depósito Ve a Slot Machine Game To Play Free Slots An arame Códigos de chip grátis de cassino Atual Zeus Happy Halloween Giros Casino online bingo Livres Infantilidade Slot Slots Caça Jogue Barulho Slot Hot top 10 cassinos online Chilli Criancice Pragmatic Play Slots Bem Casino Novo depósito sem depósito verde casino Brasil Jogos De Hand Of Anubis Casino Slot 10 Melhores Cassinos Online Do Wolf Saga giros livres de slot Brasil Top Sites Sobre 2024 Guia Cada Dos Jogos Puerilidade F777 Fighter Slot online Slots Mais Populares Top 5 Melhores Jogos Casino mega joker Cubes 2 Slot Sem Armazém De Slots Para Aprestar Online Kasynowe bonusy za rejestrację z brakiem depozytu Uciechy pod prawdziwe finanse Hazard urządzenia pod kapitał Automaty do komputerów hazardowych Wypróbuj najistotniejsze automaty sieciowy Bezpłatne Demo Komputerów Slotowych Internetowego Najkorzystniejsze Lokalne Kasyna Przez internet Zestawienia Top Kasyn 2024 Wypłacalne kasyna internetowe w polsce 2024 Gorączka topnienia srebra jak wiele kosztuje? Automaty hazardowe Automaty do odwiedzenia Gierek na rzecz Lokalnych Fanów Sizzling Hot Deluxe Przetestuj darmowo i bez Zarejestrowania się! Ultra Hot robot hazardowy Zagraj online za darmo Total War: Attila mod Fall of the Eagles v 5.3 Darmowe Pobieranie Automaty na Oryginalne Kapitał Graj po Sloty w Kasynie Gry Automaty Przez internet I Maszyny Hazardowe za darmo Hot Spoty Bonusy wyjąwszy depozytu razem spośród Darmową Gotówką w ciągu rejestrację Comprehensive Insights Paradise8 Casino Player Reviews Jackpot Bells automat do zabawy internetowego darmowo z brakiem zarejestrowania się Darmowe Gry hazardowe Automaty Hot Spot: Graj dzięki Pieniążki! Hazard za darmo: najkorzystniejsze gry w celu polskich fanów Darmowe Gry hazardowe Automaty Hot Spot Bezpłatne Gry Hotspot Rzekome pianino Rozrywka na pianinie online Bezpłatne gry hazardowe 777 jak i również różne uciechy kasyno Graj darmowo Automaty Do Gry Pod Prawdziwe Kapitał Hazard Darmowo Automaty Rozrywki Sieciowy Automaty Facebook wyjąwszy logowania Jak oglądać FB wyjąwszy konta? Najlepsze Automaty do odwiedzenia Komputerów Sieciowy Spróbuj kasyno sieciowy atomaty Hot 777 gra hazardowa bezpłatna Graj internetowego za darmo Gambling establishment Card games 2026: Most readily useful and you can Terrible Possibility Rated Nałóg od hazardu definicja, racji, symptomy oraz leczenia Bonusy bez depozytu Hazard Online za darmo 2024 Darmowe Kasyno Rozrywki bez Logowania oraz Rejestracji Legalne Kasyna Przez internet 2024 PL Najkorzystniejsze Bezpieczne Kasyna Casino X zagrać pod oryginalne finanse Kasyno x play online w urzędowej stronie internetowej Casino-x Spin City Bonus bez depozytu 50 złotych lub 30 spinów! Obecne Bonusy Bez Depozytu: Lokalne kasyna bez depozytu 2024 Seriale, Sceny filmowe, Aplikacje komputerowe, kanały Tele-wizji Online udaj się i oglądaj na Player pl