/** * 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 Online kasíno Slovenskí Hrajte bezpečne a zábavne Online Kasíno Zábava, Stratégie a Bezpečnosť na Dosah Ruky Online Kasíno Zábava, Šťastie a Výhry Darmowe Free Spiny bez Depozytu Aktualności 2026 ️ Nowe Kasyna spośród FS zbyt nv casino Rejestracje gwoli Młodych polaków Prieskum zahraničných online kasín Aké sú výhody a nevýhody Online Kasíno Zahraničné Prečo sa Oplatí Hrať Aktualne nv casino Zniżki oraz stu gratisowych obrotów bez depozytu lord of the wielka woda Bonusy Kasynowe 2025 لیا تهویه Online Kasíno Zábava, Bezpečnosť a Výhody Virtuálneho Hrania 12 Najistotniejszych Kasyn spośród Kodami nv casino Bonusowymi pod Darmowe Spiny Polska Online kasíno Slovensko Svet zábavy na dosah ruky Online Kasíno Zábava a Výhry na Dosah Ruky Online Kasíno Zábava a Výhry z Pohodlia Domova -2122041468 Νέα Online Casino στην Ελλάδα Ανακαλύψτε τις Τελευταίες Τάσεις Online Kasíno Slovenské Všetko, čo potrebujete vedieť -2124149953 Slovenské kasína Príležitosti a trendy online hazardu Online Kasino Slovenský – Zábava a Zisk na Dosah Ruky Penzion Tatra Sport Vaša perfektná dovolenka v Tatrách Have you been within the an appropriate nv casino Jackpota State? Jackpota Signal-Up Extra: 7,five-hundred GC + nv casino 2.5 South carolina I’m happy nv casino to report that commission-wise, Jackpota delivers Online kasíno Všetko, čo potrebujete vedieť -2129567796 Sensible Medical insurance Preparations Golden Rush Express Slot Bericht nv casino 2024, Play Kundgebung For Free test-1786102577-8444 test-1786102569-9925 test-1786102563-8251 test-1786102557-3948 test-1786102552-9943 test-1786102547-3058 test-1786102539-9647 test-1786102532-9668 test-1786102527-8738 test-1786102522-3150 Fruitinator > Hierbei Gebührenfrei nv casino Spielen + Echtgeld Free nv casino Spins The newest Crown Coins VIP program provides dedicated members with exclusive benefits based on their hobby For every added bonus lower than is broken down by promote type, promotion password, available states, and rollover criteria Along with small secure online game, which is a powerful way to enhance your harmony with ease Normal jackpot champions have shown legitimate winning you’ll be able to open to every one of the brand new pages engaging in modern playing factors While you are not used to local casino to tackle, or new to the very thought of in charge gambling, care and attention perhaps not Wynn Resorts indicated that it is making the web based playing company in a number of says There are specific different event available you to definitely possess on the web slot video game Such as instant funds video game, and is a great way to boost your balance easily Different varieties of bonuses can be acquired in terms of gambling on line No-deposit 100 % 100 percent free revolves normally have somewhat large betting constraints or a winnings cap supplying the newest local casino specific cover Magyar Online Casino élmény 2026: a legújabb bónuszok és promóciók ?? Twist brand new Regulation to find Novel Incentives! Don’t Overlook These Unbelievable Selling in this Most readily useful Online casino Sites No betting standards to your free twist earnings Better Gambling games playing Along with your Incentive