/** * 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; } } blog – Page 2 – tejas-apartment.teson.xyz

blog

Nuevas experiencias de juego en Bigbola Casino que debes probar

Descripción Breve de Bigbola Casino Bigbola Casino se ha establecido como un líder en el ámbito de los casinos en línea. Fundado con el objetivo de proporcionar una plataforma segura y entretenida, ofrece una experiencia de juego inigualable para todos los tipos de jugadores. En 2026, Bigbola Casino continúa innovando, garantizando que sus usuarios disfruten […]

Nuevas experiencias de juego en Bigbola Casino que debes probar Read More »

Spinbetter Login PL Kompletny przewodnik po grze w kasynie online.2993

Spinbetter Login PL – Kompletny przewodnik po grze w kasynie online ▶️ GRAĆ Содержимое Wprowadzenie do Spinbettera Zaloguj się do Spinbettera: instrukcje i wskazówki Jeśli szukasz sposobu, aby zagrać spin better casino w kasynie online, ale nie wiesz, gdzie zacząć, to jesteś w odpowiednim miejscu. Spinbetter to jeden z najpopularniejszych kasyn online, które oferują szeroki

Spinbetter Login PL Kompletny przewodnik po grze w kasynie online.2993 Read More »

Spinbetter Login PL Kompletny przewodnik po grze w kasynie online.2267

Spinbetter Login PL – Kompletny przewodnik po grze w kasynie online ▶️ GRAĆ Содержимое Wprowadzenie do Spinbettera Zaloguj się do Spinbettera: instrukcje i wskazówki Zabezpieczenie Twojego konta w Spinbetter Zabezpieczenie Twojego konta w Spinbetter – kroki do wykonania Jeśli szukasz sposobu, aby zagrać w kasynie online, ale nie wiesz, gdzie zacząć, to jesteś w odpowiednim

Spinbetter Login PL Kompletny przewodnik po grze w kasynie online.2267 Read More »

Online casino NZ full guide to playing at online casinos in New Zealand.5301

Online casino NZ – full guide to playing at online casinos in New Zealand ▶️ PLAY Содержимое Online Casino NZ: Full Guide to Playing at Online Casinos in New Zealand What to Look for in an Online Casino NZ Getting Started: Choosing the Right Online Casino for You Are you looking for the best online

Online casino NZ full guide to playing at online casinos in New Zealand.5301 Read More »

Казино Официальный сайт Pin Up Casino играть онлайн – Вход Зеркало.2604

Пин Ап Казино Официальный сайт | Pin Up Casino играть онлайн – Вход, Зеркало ▶️ ИГРАТЬ Содержимое Pin Up Casino – Официальный Сайт для Игроков Вход в Казино: Как Зарегистрироваться и Начать Играть Важно! Если вы ищете надежный и безопасный способ играть в онлайн-казино, то Pin Up Casino – ваш выбор. Это официальный сайт, который

Казино Официальный сайт Pin Up Casino играть онлайн – Вход Зеркало.2604 Read More »

Казино Официальный сайт Pin Up Casino играть онлайн – Вход Зеркало.1691 (3)

Пин Ап Казино Официальный сайт | Pin Up Casino играть онлайн – Вход, Зеркало ▶️ ИГРАТЬ Содержимое Pin Up Casino – Официальный Сайт для Игроков Вход в Казино: Как Зарегистрироваться и Начать Играть Если вы ищете надежный и безопасный способ играть в онлайн-казино, то Pin Up Casino – ваш выбор. Это официальный сайт, который предлагает

Казино Официальный сайт Pin Up Casino играть онлайн – Вход Зеркало.1691 (3) Read More »

Spinsy Casino en France dpts rapides et retraits scuriss en ligne.1208

Spinsy Casino en France – dépôts rapides et retraits sécurisés en ligne ▶️ JOUER Содержимое Un avenir brillant pour les joueurs au Spinsy Casino en France Les avantages de jouer au Spinsy Casino en France Avantages de jouer au Spinsy Casino en France Les jeux disponibles au Spinsy Casino en France Les jeux de table

Spinsy Casino en France dpts rapides et retraits scuriss en ligne.1208 Read More »

Yepcasino PL Opinie graczy i recenzje kasyna online.594

Yepcasino PL – Opinie graczy i recenzje kasyna online ▶️ GRAĆ Содержимое Wprowadzenie do kasyna online Yepcasino Recenzja kasyna online Yepcasino: opinie graczy i wypady Jeśli szukasz kasyna online, które oferuje najlepsze warunki do gry, to Yepcasino jest idealnym wyborem. Warto zwrócić uwagę na fakt, że kasyna online są coraz popularniejsze, a Yepcasino jest jednym

Yepcasino PL Opinie graczy i recenzje kasyna online.594 Read More »