/** * 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 – tejas-apartment.teson.xyz

blog

Драгон Мани как выбрать лучший игровой автомат

Обзор бренда Драгон Мани Онлайн казино Драгон Мани – это одна из самых перспективных платформ для азартных игр в 2026 году. С момента своего основания, это казино зарекомендовало себя как надежное и инновационное место, где игроки могут наслаждаться широким выбором игр и высокими бонусами. Драгон Мани предлагает своим пользователям комфортный интерфейс, который позволяет легко ориентироваться […]

Драгон Мани как выбрать лучший игровой автомат Read More »

Discovering the Allure of Soft Casinos Game Selection and Bonuses

Overview of Soft Casino Soft Casino is a premier online gaming platform that has been making waves in the international gambling scene since its inception. Known for its elegant design and user-friendly interface, Soft Casino attracts players from all over the globe. With a commitment to quality and innovation, Soft Casino stands out for its

Discovering the Allure of Soft Casinos Game Selection and Bonuses Read More »

Betjee Login – Play Instant Slots Jackpot

Betjee Overview in Bangladesh & Pakistan Betjee is a sports betting and online casino platform in South Asia. It offers a full range of sports betting, casino, and cricket exchange. The platform holds a legal license from the Curacao Gaming Authority, ensuring safe play and fair outcomes. Betjee Platform Details Founded: Year 2019 License: Curaçao

Betjee Login – Play Instant Slots Jackpot Read More »

The Ultimate Guide to Major Motor Sports Events in the USA

Understanding the Thrill of Motor Sports Motor sports have captured the hearts of millions across the United States. With high-speed races and adrenaline-pumping moments, these events draw fans from all walks of life. Whether it’s the roar of engines or the excitement of pit stops, there’s something truly captivating about watching skilled drivers compete for

The Ultimate Guide to Major Motor Sports Events in the USA Read More »

Betpro Pakistan – Lucky Score Bonus

BetPro Pakistan Casino & Sportsbook Full Guide 2026 BetPro Pakistan is a multi-format betting website operating across multiple related websites including bet-pro.pk, betpro-pakistan.com, and betpro-casinopk.com. Together, these platforms represent a unified betting environment designed for players in Pakistan and nearby regions. The platform targets users who prioritize fast registration, local deposit methods, and a streamlined

Betpro Pakistan – Lucky Score Bonus Read More »

Glassi Casino App – Collect Free Fortune Rush

Glassi Casino India (2026) {Glassi Casino is a casino platform targeting Indian players operating across multiple domains including glassi-casino.in. The platform is positioned as a full-scale gaming hub offering INR-friendly banking, a broad catalog of casino titles, and mobile-optimized gameplay. Across industry analysis pages and brand materials, the core message remains consistent: quick onboarding, wide

Glassi Casino App – Collect Free Fortune Rush Read More »

Jeetwin Pakistan – Get Fast Cash Power

JeetWin Pakistan Online Casino – Full 2026 Review JeetWin Pakistan Casino is a next-generation online gambling and gaming platform designed for users who value speed, simplicity, and mobile convenience. Operating through domains such as jeetwincasino1.com, the brand presents a unified ecosystem built around fast-paced gaming formats and frictionless usability. JeetWin is marketed as a modern

Jeetwin Pakistan – Get Fast Cash Power Read More »

Vavada Зеркало Вход на официальный сайт 2025.1167

Вавада казино | Vavada Зеркало Вход на официальный сайт (2025) ▶️ ИГРАТЬ Содержимое Вавада казино – надежный партнер для игроков Преимущества Вавада казино Официальный сайт Vavada – доступ к играм и бонусам Преимущества и функции казино Vavada – почему игроки выбирают это казино Вход на официальный сайт Vavada – начните играть уже сегодня Если вы

Vavada Зеркало Вход на официальный сайт 2025.1167 Read More »