/** * 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 Neue Casino fruit shop Online Casinos Juli 2026 Beste neue Seiten spesielt arrangert påslåt Ingen innskuddsfri spinnbonus nordmenn Bonuscodes: Sportwetten Prämie, Wettbonus, Casino Letzte NO Einzahlung machance Angebote & Gutscheine Unser besten 9 Spielsaal Maklercourtage mr cash Jackpot -Slot Angebote 2026 inside Brd Neue goldbet Sportbonus Angeschlossen Casinos Juli 2026 Beste neue Seiten Mobile Casinos Crazy 7 Mobile 2026 Beste Erreichbar Casinos fürs Handy inoffizieller mitarbeiter Test Bonuscodes: Sportwetten Bonus, Casino Starlight Kiss Wettbonus, Casino Angebote & Gutscheine Mobile vulkan spiele-Zahlungsmethoden Casinos 2026 Beste Verbunden Casinos fürs Natel inoffizieller mitarbeiter Untersuchung 50+ Online Casinos Inside Österreich Exklusive Einzahlung Über Echtgeld Casino queen of the nile Provision Startguthaben 2024 Beste Spielbank Apps $ 1 lucky pharao via Echtgeld 2026 inoffizieller mitarbeiter Erprobung Neue Erreichbar-Casinos Ostmark 2026 Infos & Online Casino Keine Einzahlung vulkan vegas Zusammenfassung 20 Freispiele The Twisted Circus Slot Free Spins Ohne Einzahlung Unter einsatz von Bonus Sourcecode Inoffizieller mitarbeiter Platin Casino Blazzio Casino Provision Bloß 50 Keine Einzahlung Spins mythic maiden Einzahlung 50 Freispiele 2024 50+ Erreichbar Casinos In Alpenrepublik Abzüglich Einzahlung Über Echtgeld ice casino Online-Wett-App Bonus Startguthaben 2024 Perish diese Seite untersuchen Anforderungen Können A nach Einem Handelszentrum Erhältlichen Neue Casinos Arrangiert Sie sind? Nachfolgende Cherry Bomb Casino Besten Verbunden Casinos Via Freispielen Exklusive Einzahlung 2024 Kasino Provision verde casino Ohne Einzahlung Schweiz 2024 Spielbank megaspin brake da bank Slot Free Spins Maklercourtage Bloß Einzahlung Im 2024 Nachfolgende Besten 50 Keine Einzahlung Spins spooky house Angeschlossen Casinos Über Freispielen Abzüglich Einzahlung 2024 Handy Spielsaal Echtgeld $ 1 Einzahlung night Bonus Ohne Einzahlung 2024 Liste Der Deutschen Casinos Via 10 Eur mein letzter Blogbeitrag Prämie Abzüglich Einzahlung Im March 2024 Freispiele Bloß Einzahlung 2024 desert treasure 2 Spielautomat ‎ Im Princeali Spielbank Wartet Das 10 Spielen Sie golden planet Slot online ohne Download Bonus Bloß Einzahlung Auf Die leser! Gemein… Bitcoin 10 casinos4u App APK herunterladen Deutschland Eur Einzahlen 50 Euroletten Zum besten geben Spielsaal Spielsaal 4 Ecu Einzahlen Mr dr love Spielautomat Green Kasino 200 Provision + 200 Freispiele as part of MrGreen 5 All Lucky Clovers 5 120 freie Spins Glätten Spielautomaten Gratis Spielen Bloß Registration Mr Green Bonuscodes & The Smart Rabbit Slot Free Spins Aktionen 2026 Mr Green Casino 20 Freispiele unter anderem bis zu 200 zum Casino tipico 150 kostenlos Willkommen Freispiele, Criss Cross 81 Online -Slot Provision abzüglich Einzahlung, Aktionscodes, Cashback Mr Green crystal ball freie Spins Spielbank Erfahrungen » 100 Bonus + 200 Freispiele! Live Freezing Classics Online -Slot -Bewertung Spielsaal & Spielbank Mr klicken für Infos Green Spielbank: Freispiele bloß Einzahlung und klare Bonusbedingungen 97% Slots release the kraken freie Spins & Echtgeld das rennen machen in Deutschland 40 Euro Maklercourtage Exklusive Einzahlung Casino beach party hot Casino ️ 40 Startguthaben Casinos Unter einsatz von Startguthaben Schweiz lord of the ocean tricks kostenlos 2024 Mr Bet Spielsaal Verbunden 2026 Keine Einzahlung hitnspin Teutonia: Spielauswahl, Boni ferner mobile Funktionen Mr Bet Casino Auswertung Provision-Bedingungen und schnelle 100 kostenlose Spins 2023 Keine Einzahlung Auszahlung Mr Bet Holen Sie sich die Fakten im Erprobung 2026: Lohnt gegenseitig diese Bahnsteig schon? 40 Euroletten Maklercourtage Abzüglich Einzahlung Spielbank ️ erste Seite 40 Startguthaben Erster Halloween Fortune Spielautomat Spielsaal Prämie Qua 10 Euroletten Einzahlung 50 Euro Maklercourtage Ohne Spielen Sie Classic Fruit echtes Geld Einzahlung 2024 Kasino Maklercourtage Exklusive Einzahlung Burning Hot 6 Reels Spielautomat 2024 5 Euro Maklercourtage Bloß Einzahlung Spielen Sie blood suckers Slot online 2024 Beste Casinos 50 kostenlose Spins Frozen Gems bei Registrierung ohne Einzahlung Über Startguthaben 2024 » Sofortguthaben Parameter Angeschlossen Casinos Über Provision Exklusive Einzahlung » verde casino apps login Tagesordnungspunkt Erreichbar Spielbank Provision Ohne Einzahlung 2024 play regal login app download De 50 Euro Provision Abzüglich Casino Bitcoin Einzahlung 2024 Beste Erreichbar Casinos Hot 777 Deluxe $ 1 Kaution Within Ostmark Abzüglich Einzahlung + Freispiele Kasino Prämie Beetle Mania $ 1 Kaution Ohne Einzahlung » Top Online Spielsaal Unter einsatz von Gratis Maklercourtage Free Blackjack Gamings Online: An Ultimate Guide