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

Uncategorized

Live much time, become better: Science-founded tricks for suit ageing

Blogs The fresh Upside to Ageing The newest Mental Fitness routine to own Confident Ageing Usually consult your health care provider, attorney or economic advisor in terms of any type of number, and do not act otherwise avoid acting on the basis out of all you has continue reading this site. Website links in order […]

Live much time, become better: Science-founded tricks for suit ageing Read More »

Maximum Bet Restrictions United kingdom Take a look at UKGC stake constraints

Blogs Negative effects of Risk Limits to the Bettors and you will Local casino Companies The Greatest step three Picks for no Deposit Gambling enterprises So it Month Existing Customer Incentives Regarding the online casinos community, this can be particularly important as the one thing can appear unbelievable up until it’s confronted. To the earliest

Maximum Bet Restrictions United kingdom Take a look at UKGC stake constraints Read More »

Finest Western european Gambling enterprises for Uk Players Eu Casino Internet sites 2025

Articles Punctual & Secure Withdrawals Customer service Mobile-Personal Bonuses Step 5: Initiate To play Uk introduces share limitations to have online slots Professionals searching for with these services is also discuss all of our faithful pages to your PayPal casinos, Skrill casinos, and you can Neteller casinos. Then details appear in all of our overview

Finest Western european Gambling enterprises for Uk Players Eu Casino Internet sites 2025 Read More »

Large Stakes and Large Limitations Casinos: Earn 500x Their Share Online

Content Locating the best Ranked Casinos on the internet away from United kingdom What types of games try popular during the casinos on the internet? Ideas on how to Stay safe and get away from Scams It’s subscribed because of the British Gambling Payment, guaranteeing its people a reliable and you can safe sense. It

Large Stakes and Large Limitations Casinos: Earn 500x Their Share Online Read More »

Hyper Hues Online Position Opinion: Neon-Supported, Highly-Volatile Fun

Blogs Head Services & Video game Features Author’s Advice on the Application Merchant In charge Betting Techniques It’s fast and repeated, if you’lso are seeking breeze a good screenshot from a big win, you might finest be on finest from it. I’m called Niklas Wirtanen, I operate in the net playing community, i am also

Hyper Hues Online Position Opinion: Neon-Supported, Highly-Volatile Fun Read More »

Habanero Online slots games Gamble Totally free Demonstrations

Content Deuces Insane Research Dining table of one’s Top Habanero Ports inside the South Africa Los mejores proveedores de app de tragamonedas en VegasSlotsOnline Perform Habanero offer Megaways slot headings? Greatest Habanero Casino games inside the South Africa Since the joining in may 2023, my absolute goal has been to add our very own customers

Habanero Online slots games Gamble Totally free Demonstrations Read More »

Play Gustav in the tree slot machine Minebuster Slot For the net The real deal Currency or even Totally free Sign up Now

Blogs The brand new icons away from nightmare Gustav Minebuster Extra Has Auto mechanics RTP and Maximum Victory Possible Condition gustav minebuster Payment Steps in the uk Condition Net web sites Dynamite Rush Common Slots Although not, once you’ve fun for the Multiple Twice Da Vinci Diamonds casino slot games, that which you’ll listen to

Play Gustav in the tree slot machine Minebuster Slot For the net The real deal Currency or even Totally free Sign up Now Read More »