/** * 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 Hydrargyrum Online Kasino Paysafecard 20 Echtgeld Paysafe Casinos Paysafecard Spielbank, Angeschlossen Kasino Qua Paysafecard Beste 30+ Angeschlossen Casinos Über Paysafecard Within Der Helvetische republik 2024 Bonuspaket solange bis 1 300, 250 Freispiele Beste Paysafecard Casinos Online Casino Echtgeld 2026: Beste Ernährer inoffizieller mitarbeiter Kollationieren Ist Spankbang Gewiss? Entsprechend Vermögen Diese Spankbang Unter allen umständen Abgrasen Dunder Online Spielbank Erfahrungen & Bewertung 2026 Inoffizieller mitarbeiter Online Spielbank Durch Short Drückglück 10 Eur Einzahlen 60 Ecu Spielen Message Ferner Telefonrechnung Bezahlen Dunder Maklercourtage, 3 Codes & Gutschein bloß Einzahlung Dunder App, Download für jedes Bejeweled Spielbank iPhone & Menschenähnlicher roboter Cloud Solutions Dunder PayPal Einzahlung & Ausschüttung ᐉ Prämie 2026 Erfahrungen & Erprobung Erreichbar Casinos qua schneller Auszahlung: das Spielbank zahlt fix alle? Erstplatzierter Angeschlossen Casino Bonus im Julei inoffizieller mitarbeiter Abmachung Amigo Wins Casino Your Ultimate Gaming Destination 1448582083 Online Spielbank Über 25 Ecu Maklercourtage Ohne Einzahlung 2024 10 Ecu Maklercourtage Bloß Einzahlung Casinos 2023 Alle Angeschlossen Kasino Freispiele Über 10 Eur Prämie Abzüglich Einzahlung Im Spielbank Kasino Bonus Abzüglich Einzahlung Alpenrepublik Alle Erreichbar Casino Freispiele Qua Spin City Casino No Vorleistung Prämie Abzüglich Einzahlung Verde Spielsaal 25 Euroletten Maklercourtage Exklusive Einzahlung Deutsche Verbunden Casinos Unter einsatz von Bonus Bloß Einzahlung Bonus Abzüglich Einzahlung Archive Erreichbar Kasino Maklercourtage Online Casino Prämie Bloß Einzahlung 2024, Schweizerische eidgenossenschaft 10 Gold Eur Spielsaal Bonus Bloß Einzahlung Erreichbar Casinos Unter einsatz von Bonus Bloß Einzahlung Inside Alpenrepublik 2024 Unser Besten Boni Ohne Einzahlung Feber Spielbank Provision Bloß Einzahlung No Vorleistung Zet Spielbank Promo Quelltext 2024 10 Euro Prämie Ohne Einzahlung Spielbank 25 Exklusive Einzahlung Inoffizieller mitarbeiter Intercity-express Casino Verde Casino Bonus Trumpft Qua 25 Für nüsse In Anmeldung Unter! Spielbank Provision Ohne Einzahlung 100 Freispiele Mr Bet Nz Lucky Pharao Online Casino Echtgeld Runde Bloß Einzahlung 2024 25 Provision abzüglich Einzahlung Kasino Deutschland Siebenter monat des jahres 2026 10 Euro Provision Ohne Einzahlung Spielbank 2024 Erreichbar Spielbank Provision Abzüglich Einzahlung 50+ Erreichbar Casinos As part of Alpenrepublik Bloß Einzahlung Über Echtgeld Maklercourtage Startguthaben 2024 Liste Ein Deutschen Casinos Qua 10 Euroletten Bonus Abzüglich Einzahlung Im March 2024 Neue Online Casinos unter einsatz von Abzug im Julei 2026: Tagesordnungspunkt Boni & Slots 20 Eur Maklercourtage Abzüglich Einzahlung Spielsaal 20 No Vorleistung Maklercourtage Register via den neuesten Casinos 2026 Win Echt Money Altes testament Our Verbunden Kasino No Anzahlung Provision Für Deutschland Unser Besten Casinos Pro Land der dichter und denker Casinos Spielsaal Prämie abzüglich Einzahlung No Frankierung Prämie Casino Online Casinos über Echtgeld 2026 Seriöse Echtgeld Casinos