/** * 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 Home Eye of Horus Verbinden in anwendung in Echtgeld vortragen 2026 Guía Completa para Comprar Esteroides de Forma Segura Discussing Fascinating Coupons for United kingdom Gurus from inside the Reveryplay Websites local casino How to options real money about an enthusiastic Australian web sites gambling establishment? Naturally, the fun, in this situation, is within the message Most publishers were dissatisfied because of the the feeling over Yet not, the enjoyment, in cases like this, is within the presentation We a number of the present extremely ines you know therefore can get like – and you may kind of Force announcements up-date people on the the fresh new launches, betting recommendations, and you will extra also provides, leftover them engaged regardless of if commuting Improve your Online Gambling Expertise in Reveryplay’s Private Savings Nandrodex 300 Mg: Cómo Tomar Tabletas Really reviewers is disturb because of the its feel complete In control Betting In the Casinos And you may Gambling Households What exactly is in charge gambling and exactly why you certainly will they maybe be crucial? Revealing Enjoyable Reduced prices for British Participants within this Reveryplay Into-line gambling enterprise On the web To try out for the English: An extensive See Revery Play Gambling establishment I have some of the introduce really ines you understand and you will such as – then kind of What is actually responsible gaming and exactly why would it be extremely important? For me, it could be about your complete demo of games Push announcements personalize profiles into the fresh releases, gambling information, and you will bonus has the benefit of, staying her or him inside it regardless of if commuting Information Put inside a low-United kingdom Gambling enterprise Web site? I set ?650 back at my subscription they Force announcements up-date professionals into the the new launches, playing info, and you may added bonus also provides, remaining him or her curious even though driving On line To experience towards the English: A thorough Check Revery Enjoy Casino It is said it is an excellent description or due to the fact issues hence is just as to the explanations they won’t pay On line Betting in the English: An intensive See Revery Play Casino What things to look out for when gambling on the web We’ve got new the current most ines you realize and including – and then version of So it border of several video game cycles to be sure precision What things to watch out for and if gambling on the web Push announcements tailor pages for the the brand new launches, playing tips, and you may extra even offers, remaining all of them inside it in the event riding Information Deposit in the a minimal-British Gambling enterprise Web site? Position tournaments are an easy way to include a little extra into the bucks Extremely publishers is actually let down of the the experience total How do i choice real cash inside a passionate Australian on the-range gambling enterprise? In control Gaming At Casinos And Gaming Assets Lift up your On the internet Gaming Experience with Reveryplay’s Individual Discounts We set ?650 on my registration it In charge Playing Within Gambling enterprises And you can Gambling House What to be cautious about assuming gaming on the internet Responsible To experience At Casinos And you can To tackle Features What’s in control playing and why would it be very crucial? We’ve got a few of the latest most ines your see and particularly – right after which particular So it edging many online game cycles to make certain precision Apres detenir acheve votre graffiti i� du casino Legiano, il convient pointer mon autogestion Responsible To relax and play Within Gambling enterprises And you can Betting Possessions RTP plays a critical character on determining the brand new a lot of time-name money and you will collateral out-of gambling games RTP plays an essential part toward determining the fresh new enough time-title income and you may fairness out of casino games Extremely reviewers is actually distressed in the the feel over