/**
* 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;
}
}
The post Upptäck EU Casinon En Guide till Spel och Bonusar first appeared on .
]]>
EU casinon har blivit alltmer populära bland spelare världen över, och med rätta. Dessa plattformar erbjuder en mängd fördelar, inklusive säkerhet, spännande bonusar och en mängd olika spelalternativ. I denna artikel kommer vi att dyka djupare in i vad EU casinon innebär, deras fördelar, samt hur du kan maximera din spelupplevelse. För mer information, besök eu casino https://casinobonusutaninsattning.net/eu-casino/ och ta del av de senaste erbjudandena och tipsen.
EU casinon är online casinon som är registrerade och reglerade inom Europeiska unionen. De följer strikta spelregler och säkerhetsprotokoll, vilket ger spelare en trygg spelmiljö. Eftersom dessa casinon är under överinseende av europeiska myndigheter, kan spelare vara säkra på att de erbjudna tjänsterna är rättvisa, och att deras personliga information och pengar skyddas.
EU casinon erbjuder en mängd olika spel som passar alla typer av spelare. Här är några av de mest populära speltyperna:
Slotmaskiner är kanske de mest populära spelen på nätcasinon. De erbjuder olika teman och funktioner, inklusive bonusspel och jackpotter. Många casinon erbjuder både klassiska slotar och moderna video slots.
Bordsspel som blackjack, roulette och baccarat är också vanliga. Dessa spel ger både spänning och strategisk utmaning och är perfekta för dem som vill ha en mer aktiv spelupplevelse.
För den mest autentiska upplevelsen erbjuder många EU casinon live dealer-spel. Från roulette till blackjack, dessa spel spelas i realtid med riktiga dealers, vilket ger en äkta kasinokänsla direkt i ditt eget hem.

Att välja rätt EU casino kan vara en utmaning med så många alternativ tillgängliga. Här är några faktorer att överväga:
Bonusar är en stor del av spelandet på EU casinon. Det är viktigt att förstå de olika typerna av bonusar som erbjuds:
Dessa erbjudanden ges till nya spelare när de registrerar sig. Vanligtvis kan det vara en matchbonus på din första insättning, vilket innebär att casinot dubblar eller ökar din insättning upp till ett visst belopp.
Många casinon erbjuder gratis spins på utvalda slotmaskiner, vilket ger spelare en chans att vinna utan att riskera sina egna pengar.
För redan registrerade spelare finns det reload bonusar, vilket är liknande som välkomstbonusar men erbjuds på efterföljande insättningar.
Cashback bonusar ger spelare en procentandel av sina förluster tillbaka, vilket är en utmärkt möjlighet för att minska risken.
Spelande är en form av underhållning, men det är viktigt att spela ansvarsfullt. Sätt gränser för din spelbudget och kom ihåg att alltid spela för nöjet, inte för att vinna pengar. Många EU casinon erbjuder verktyg för att hjälpa spelare att begränsa sitt spelande, inklusive insättningsgränser och självuteslutning.
EU casinon erbjuder en säker och spännande plattform för spelare att njuta av sina favoritspel. Med reglerade miljöer, attraktiva bonusar och ett stort urval av spel är det inget överraskande att dessa casinon har blivit så populära. Genom att följa riktlinjerna för ansvarsfullt spelande och göra informerade val, kan du njuta av en fantastisk spelupplevelse. Oavsett om du är en ny spelare eller en erfaren veteran, finns det något för alla på EU casinon.
The post Upptäck EU Casinon En Guide till Spel och Bonusar first appeared on .
]]>