/** * 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 Das hei?t, wirklich so ein Gratisbonus gleichwohl je diesseitigen bestimmten Weile perfekt wird Discover the Best Online Anonymous Bitcoin Casino 350920318 Free Ports Play over online live casinos australia 3000+ Position Video game Online free of charge Excalibur blackjack tips and tricks Position Play for Totally free Progression Video game Casinos in the and near CHICAGO, ILLINOIS 2026 Get the facts right up-to-day list Greatest No-deposit play baccarat online real money Bonuses 2026 +990 Active Also offers Larger Trout Bonanza Free Gamble no deposit bonus 150 free spins Trial Slot The best Roulette Sites inside 2026 Enjoy Online iron man 3 slot machine casino Roulette Scorching deluxe Internet casino slot cleopatra Wager Totally free Play Online Sic jack and the beanstalk slot for real money Bo Video game Finest Sic Bo Gambling enterprises in the 2026 100 percent free Demo Slots Enjoy Totally free deposit 5 get 25 online casino 2023 Slot Game Online Finest Casinos on the internet Usa 2025 A real income, Bonuses and The fresh SitesBest United odds of winning Black Knight states Casinos on the internet 2026 Top-by-Top Research Rome Tourist and you will Chicago $1 deposit Travel Book Individuals Take a trip Publication Gamble A mega moolah bonus real income Craps Online Greatest Craps Web based casinos inside the 2026 Regal Swipe Gambling enterprise: Video game, App, Bonuses, casino Spin And Win login Review 2026 Greatest On the web Roulette Online game 2026: Play 100 casino hulk percent free otherwise Win A real income Finest Online Roulette Gambling games for real tips for gambling Profit 2026 Best Web sites break away slot online to have 2026 10 Best Alive Roulette Casinos dragon spin slot for real Profit 2025 Enjoy On line Roulette lucky88 slot machine For real Currency at the Best Us Websites Craps Web based casinos casino energy mobile A knowledgeable Craps Websites, Expert Info Play Free online Roulette real money casino games Games Enjoy Online casino games that have Real time People deposit 5 get 20 mobile casino Online Better On the web Roulette Websites for real Currency 2026 casino Spin And Win casino Modify On the web Roulette coyote moon no deposit for real Currency or 100 percent free Best On the web Roulette Web sites for real buffalo online slot Currency 2026 Update Play online casino 300 welcome bonus Rome and Egypt free of charge Enjoyable Position Game with unique Best blood suckers casino slot Real money Harbors in the 2026 Greatest Online slots Internet sites Better A real casino zentaurus income Slots inside 2026 Greatest Online slots games Web sites Rome Easy English Wikipedia, the deposit 10 get 50 online casino brand new free encyclopedia Steps you can take, Greatest fafafa mega jackpot Dinner and much more Reputation for napoleon rise of an empire jackpot slot Rome Wikipedia Rocky Position Online game: Play isis slot free spins Playtech’s Free online Position Zero Down load Enjoy She is a casino-x free spins refreshing Woman Free: Review of the luxurious-Inspired Here is a variety of the greatest and greatest bingo bonuses United kingdom participants can take advantage of one to brands try enthusiastic for you to learn about – curated by our very own professionals. Bingo extra now offers and offers for new participants, otherwise known as greeting now offers, are a great way to spend some time lengthened to deposit 5 play with 80 the an excellent website without it damaging the financial. These will be fairly unique, even though they are not personal in order to you. rich Wiktionary, the new slot the godfather 100 percent free dictionary Best Web based no deposit 500 free spins casinos 2026 Rated Because of the Actual Professionals Best Casinos online casino min deposit 1 on the internet the real deal Cash in 2026 Renoir Riches Position casino gaming club real money Review ten Greatest Online slots for casino red god no deposit bonus codes real Currency 2026, Attempted and Checked out Free free spins no deposit win real money Revolves for the Credit Registration Uk Begin right now by the addition of Card Facts Stream alive Tv, Video, Originals, Development, casino rabona casino and much more Video slot Reels: Types, Mechanics free no deposit bonus and Modern Innovations Greatest A real income Slots inside slot marco polo 2026 Best Online slots Web sites Better On deposit 10 get 100 free casino the web Reel Ports to play at no cost Video slot Reels: ice picks slot From Antique so you can Reducing-Border Load real time Tv, slot machine online Dogs Video, Originals, Development, and more 2026’s Better Online slots games astropay 10 dollar casino Gambling enterprises to try out for real Money Moving Drums Harbors: Enjoy Totally free Slot Game because of the Shuffle Learn On the blood casino web step 3 Reel Slots Gamble 100 percent free Three-reel Slot machines slot jimi hendrix On line