/**
* 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;
}
}
2026 - - Page 170
Skip to content
Essential Tips for Responsible Gambling You Should Know รู้จักการตั้งงบประมาณการเล่น การตั้งงบประมาณการเล่นพนันเป็นขั้นตอนที่สำคัญมาก เพราะช่วยให้คุณรู้ว่าควรใช้จ่ายเท่าไหร่ในแต่ละวันหรือแต่ละเดือน โดยคุณสามารถเข้าถึง 188BET ทางเข้า เพื่อเพิ่มความสะดวกในการจัดการงบประมาณของคุณได้อย่างมีประสิทธิภาพ การกำหนดวงเงินที่แน่นอนจะช่วยลดความเสี่ยงที่จะเสียเงินมากเกินไป และทำให้คุณสนุกกับการเล่นได้อย่างไม่ตึงเครียด นอกจากนี้ ควรให้ความสำคัญกับการประเมินผลการเล่นของตนเองอย่างสม่ำเสมอ หากพบว่าคุณใช้เงินเกินงบประมาณที่ตั้งไว้…
Read More
Если основной сайт недоступен в вашем регионе, просто воспользуйтесь Laki zerkalo. Laki World — всегда открыт для настоящих ценителей азарта.…
Read More
Il Winstrol, noto anche come stanozololo, è uno degli steroidi anabolizzanti più popolari utilizzati sia nel bodybuilding che nello sport.…
Read More
Lorsque nous parlons de jeux d'argent en ligne, nous nous attendons à trouver des solutions de paiement rapides et sécurisées.…
Read More
Afun: Tu Pasaporte al Entretenimiento en Línea En la era digital, el entretenimiento ha encontrado una nueva dimensión y a…
Read More
Beginner's Guide to Casino Betting: Essential Strategies for New Players ทำความรู้จักกับคาสิโนออนไลน์ คาสิโนออนไลน์เป็นแพลตฟอร์มที่เปิดให้ผู้เล่นสามารถเข้ามาเดิมพันในเกมคาสิโนต่าง ๆ ได้จากทุกที่ โดยไม่จำเป็นต้องเดินทางไปยังสถานที่จริง การเดิมพันในคาสิโนออนไลน์นั้นมีความสะดวกสบายและสามารถเข้าถึงได้ง่ายผ่านอุปกรณ์ต่าง ๆ เช่น สมาร์ทโฟน แท็บเล็ต…
Read More
Canada: If you're a player from Canada looking to up your game on The GameWise casino's Fortune Coin slot machines,…
Read More
Texnologiyanın qumar oyunlarına təsiri pin up ilə yeni dövrün başlanğıcı Texnologiyanın inkişafı və qumar oyunları Texnologiya, son illərdə qumar oyunları…
Read More
Masteron P 100 est un stéroïde anabolisant extrêmement prisé dans le milieu de la musculation et de la performance sportive.…
Read More
Navigating the landscape of trading platforms a comprehensive comparison guide Understanding Trading Platforms In today’s dynamic financial market, trading platforms…
Read More