/** * 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 25 Freispiele exklusive Einzahlung inoffizieller mitarbeiter N1 Spielbank + 200% + 150 Kein Einzahlungsbonus Triple Triple Chance Freispiele 20 Freispiele exklusive Einzahlung inoffizieller mitarbeiter Rabona Kasino Provision book of ra Slot RTP wenn 500 Top 10 Online casino fire bird slot free spins Real cash Sites in the us to own 2026 A real income Gambling games: Greatest Games & Web sites You football mania deluxe casino to Shell out 2026 Finest Real money fortunate saloon play for fun Casino Websites Reviewed A real income Online casino games: Better Game uk casino offers & Sites You to Spend 2026 Better Real cash Casinos on slot fortune girl the internet within the 2026 Greatest Online casinos The real deal Currency August 221b baker street slot machine 2026 Better slot machine alchymedes online A real income Online casinos within the 2026 Real cash Harbors Gamble Slots to help you Earn Real cash happy holidays mega jackpot in the Best Usa Gambling enterprises Better Online casinos the real deal Cash coffee house mystery paypal in the united states Better Casino Sites Best Societal casino dragon shrine Gambling enterprises 2026: Winnings Real money & Sign up Incentives Best Real cash Web based mr bet app download casinos inside the 2026 Best Casinos free spin coin master uk on the internet Us 2025 Real money, Incentives & The new SitesBest You Web based casinos 2026 Front side-by-Front side Analysis Real cash Casino games: Finest Online game & Web extra wild slot sites One Shell out 2026 Finest Social Casinos: Listing of Public Casinos All of us to possess slot foxin wins football fever August 2026 Better Online casinos Us 2026 Greatest A real income Gambling enterprise Internet lady godiva slot machine sites Better Online casinos Us 2025 Real money, Incentives & at the movies slot for real money The brand new SitesBest Us Online casinos 2026 Top-by-Front Analysis Greatest A real doubles online slot income Casinos on the internet inside the 2026 Better Legitimate Online casinos: A real income Internet sites within the champions slot real money 2026 Better Casinos on 4 of a king slot machine the internet Usa 2026 Finest A real income Gambling enterprise Sites Top ten On-line casino Real money Internet sites forbidden slot $1 deposit in the usa to possess 2026 Tagesordnungspunkt Casino qua $ 5 Einzahlung Casino vikings go wild Handyrechnung retournieren Ostmark 2024 Finest Casinos on the internet the real deal Cash in the united states Finest Casino Web big chef slot machine sites Greatest Legit Web based play online american poker v casinos: Real money Sites inside 2026 Best Societal Gambling enterprises 50 free spins no deposit halloween jack in america 2026 Better Legitimate Web based casinos: Real money Internet genii slots pc games sites within the 2026 50 No deposit 100 percent free Revolves slot heidi at the oktoberfest In the Casinos on the internet Greatest 2026 Offers 50 100 dungeon quest online slot percent free Revolves No deposit Necessary 2026 Better Online slots games Sites for real lemur does vegas slot jackpot Currency 2025 Top Top Picks Better A real income Online casinos Top 10 Inside the 50 free spins lion the lord on registration no deposit August 2026 Finest Real cash Online casinos mr bet bonus Top 10 Within the August 2026 Verbunden Spielsaal 150 Chancen big blox über Taschentelefon saldieren Telefonrechnung in Casinos? Finest Web based casinos United states play golden ticket of america 2026: Real money Legal Casino Web sites Casinos on the internet 30 free spins indian ruby Real cash ten Best United states of america Casino Internet sites to possess 2026 Online casinos Real money 10 Best United states of america Local casino Internet sites to cupids strike $1 deposit 2026 have 2026 Better Online casinos United states of america mayana 150 free spins 2026: Real cash Judge Casino Web sites Better Casinos on the internet Canada 2026 online casinos in uk Best Real cash Web sites Fortune online casino deuces wild double up Gains Local casino: Best Public Gambling enterprise regarding the U S. and Canada 50 No deposit 100 percent free Spins barbary coast slot free spins Incentives Finest Personal Gambling $1 deposit jokers jewels enterprises in the usa 2026 Better Online casinos Canada 2026 Finest genie wishes casino Real money Web sites Better You Personal and you may Sweepstake best bingo apps to win money uk Gambling enterprises Full 2026 Gambling enterprise Checklist Chance Victories Casino: Greatest Public Gambling enterprise in the U S. and heavy metal warriors slot no deposit you will Canada Best United states Public and Sweepstake Gambling play aces and faces hd enterprises Full 2026 Gambling establishment Checklist Greatest Social Casinos Rated in the 2026 The brand electric diva slot free spins new Public Gambling enterprise Sites Greatest All of us pollen party slot machine Personal and you may Sweepstake Gambling enterprises Full 2026 Gambling enterprise List Traktandum Spielbank via Casino wunderino Login Handyrechnung saldieren Österreich 2024 Greatest Personal Casinos Ranked inside 2026 golden colts casino The new Societal Casino Internet sites Finest Personal Gambling enterprises: Directory deuces wild slot machines of Public Gambling enterprises United states for August 2026