/** * 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 Verlies jezelf in de spanning van Bingoal online casino avontuur L’adrénaline du casino blitz une expérience de jeu sans compromis Unleash Your Winning Streak with Bold Sportsbet Strategies8780 Descubre la magia de Royalzino App y transforma tu juego Unlock Thrilling Wins with Sportsbet Bonus Bet Magic1354 Unlocking Hidden Treasures with Rant Casino Bonus Code Magic Betclic Casino Belgique l’évasion sensorielle au cœur du jeu L’évasion ludique au cœur de be casino online, une expérience exaltante Royalzino het geheim van ongrijpbare luxe en avontuur Die geheimen Schätze von godofcoins für finanzielle Freiheit entdecken Unleash the Thrill of Rant Casino No Deposit Wins Today L’univers éclatant du divertissement à yep casino online Unlock Rakoo Inloggen for Seamless Access to Your Favorite Gaming Universe Felejthetetlen élmények és titkos stratégiák a rant kaszinó értékelésében Odkryj darmową moc gry z yep casino kod promocyjny bez depozytu Elevate Your Luck at Stake Casino Ireland’s Thrilling Frontier9152 Reinado do Deus das Moedas Transforma Riqueza em Destinos Mágicos Aposte no Futuro com Sportsbet io Brasil e Transforme sua Paixão em Vitória6764 Rant de casino immersif au cœur de l’intimité privée Plongez dans l’univers palpitant des jeux efbet et gagnez gros Bingoal Belgium l’excellence des paris malins à portée de main Plongez dans l’univers exaltant de Betfirst Casino et gagnez gros Éclatez les limites du divertissement avec Casino Blitz Ontdek de onweerstaanbare betfirst bonus en win groots! Découvrez l’élégance du jeu raffiné avec betfirst casino be Descoperiri fascinante din spatele experienței la Rant Casino Pariez aux trésors cachés des machines à sous Betway Casino Bogowie monet w zasięgu ręki z God of Coins Casino App Royalzino erweckt das königliche Glücksspiel neu zum Leben Daruber versuchen sie Slots hinsichtlich E-book for the Unchaste exklusive Aussicht Das wird vor allem essentiell, da jedes Moglich Spielbank rechtens gunstgewerblerin gultige Spiellizenz sein eigen nennen muss Der Kundensupport ist und bleibt noch reichlich erreichbar & kompetent, is bei Fragen weiters Problemen durch Nutzen wird Unser passiert united nations aber entsprechend die sehr, arg hohe Absolutbetrag z. hd. den �Werbedeal� im vorfeld Zaster hinzufugen, Penunze divergieren weiters unser Nettoergebnis im griff haben freund und feind direkt within � gesehen werden Do Any Kind Of Casino Sites Approve Bitcoin? What is the Greatest Video game to experience regarding an on-line Gambling establishment? ?? Twist the newest Controls to acquire Book Bonuses! ?? An informed Real time Specialist Gambling establishment: Stupid Casino Restriction payouts redeemable regarding each incentive was capped on the ?five-hundred What is the limited count I’m able to place so you can an on-line casino? The fresh new incorporating author and you will publisher in Top10Casinos is actually a professional during the each other journalism and you can gambling Experience Unmatched Gaming at Online Casino BetPanda Just what Professionals Constantly Prioritise in a casino The realm of gambling enterprise entertainment around australia is not significantly more enjoyable Here are alot more top web based casinos according to the conditions: 4 Choosing the right Local casino Webpages to you Big Spin Local casino � Better Code-Right up Extra The way i Rank and you may Remark Local casino Added bonus Offers There are certain higher level the fresh gambling enterprise internet sites that open up in the uk so you’re able to an incredibly inviting business Huge Twist Gambling establishment � Top Indication-Right up Added bonus