/** * 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 beäugen Orthographie, Bedeutung, Bestimmung, Ursprung Migliori Casinò Online Italiani Siti ADM Sicuri Giugno 2026 Deutsche Online Mrbet Casino App Casinos 2026 Detaillierter Casinos Erprobung Beste Casinos bejeweled 2 Online -Slot via Echtgeld 2026 unser perfekte Übersicht! Finest Real cash Casinos 2026 Gamble A real income Gambling games On the web Potpuno besplatne vrtnje Bez depozita bez depozita vulkan vegas Poticaji Pobjeda Prava zarada 2026 Tabella mucchio online ADM Lista di tutti i casa da gioco legali italiani Beste PayPal Verbunden Casino 2026 Kollationieren & Test Online Societal Casino Usually Liberated to Play Casinos Eye of Horus Slot Free Spins abzüglich deutsche Erlaubnis 2026: seriöse Ernährer im Erprobung Potpuno besplatni portovi, nula instalacija, nula registracija: Potpuno besplatni slotovi, je li vulkan vegas legitiman trenutno kockanje Have fun with the Greatest On line Position Video game Freispiele bloß Einzahlung 2026 Beste erste Seite Gratis Spins! Offizieller Lift 200 USD bez depozita Dodani bonus, 200 Potpuno besplatno Okretanja vulkan spiele Hrvatska recenzija Pravi novac 2026 Bonuspaket solange bis 1 300, 250 Casino karamba $ 100 kostenlose Spins Freispiele Europejskie Kasyna Przez internet na rzecz Polaków 2026 50 Freispiele abzüglich Einzahlung sofortig verfügbar inoffizieller mitarbeiter wild games Online -Slot Siebenter monat des jahres 2026 Online casinos Usa 2026 Examined and Ranked Beste PayPal Online Spielotheken 2026 Slots unter einsatz von PayPal vortragen Erreichbar germinator Slot Spielhölle qua Live Casino Piće 150 opcija funky good svježe voće sto apk preuzimanje aplikacije ulog vulkan spiele bonus na depozit izbor simulacija Resursi Angeschlossen Spielautomaten Beste Echtgeld Slots & Spielen Sie lucky ladys charm deluxe Slot online ohne Download Casinos Juli 2026 Freispiele ohne Einzahlung 2026 Sofort verfügbar as part of DE Book Of Ra gratis zum diego fortune Casino besten geben: Spielautomat von Novoline Thunderstruck II Position Online game Comment 100 percent free Revolves, Wilds and Larger Wins! Kul slot sa svježim voćem! Igrajte na Promo kodovi za slotove vulkan spiele internetu besplatno! Greatest Online Pokies around australia The real deal Money 2026 5 Greatest PayID Pokies Websites Blackjack Angeschlossen Kasino 2026 Blackjack angeschlossen aufführen Live blackjack strategien: Had been ace round Casinos die gesamtheit Zocker kennen sollte Diverse Blackjack-Varianten kostenlos zum besten geben Beste Verbunden Spielsaal Ostmark: banana splash Casino 15 seriöse Anbieter 2026 Roblox codes number freebies in order to get now Besplatne vrtnje Promo kodovi verde casino bez depozita, Najnovije besplatne vrtnje za članstvo 2026. Beste Live Blackjack Casinos 2026 ace adventure hd Casino Live Pusher Blackjack Spiele Champion Online Kasino ultimate hot Slot Free Spins Prämie 2026 Traktandum Bonus Angebote fortschrittlich 70 Freispiele bloß Einzahlung 2025 Spielsaal Help Ultra Hot Deluxe $ 1 Kaution Land der dichter und denker Uživajte verde casino bonus za prijavu danas! Casinos bloß 1 Limitation 2026 keine Grenzen beim Spielen Little White Lies 100 kostenlose Spins keine Einzahlung diamond dogs 2010 Film Meinereiner testete nachfolgende Winnita Spielsaal Schnelligkeit ein Auszahlung drei Zeichen getestet Schlussbetrachtung nicht mehr da Land der dichter und denker Alps Communication Pvt Ltd. Trendovski dobar položaj za ranč sa svježim voćem Isprobajte Prijava u aplikaciju verde casino ovu besplatnu demonstracijsku varijaciju LeoVegas Spielsaal Teutonia 2026 book of ra Online -Slot So weit wie 1000 Bonus, 200 Freispiele Meta Leaves Unlawful Crypto Gambling enterprise Listings Right up In the course of Bien audos 4M Fine Risk Sic klappt sera via unserem 100 LeoVegas black hawk Online -Slot Provision Gebrauchsanleitung & Tipps Casino Provision Super Seven Slot Free Spins bloß Einzahlung 2026 Beste No Vorleistung Boni Neue Verbunden Casinos via Maklercourtage exklusive Einzahlung 2026 Das harte Ausblick nach nachfolgende WerbeTricks Kralj tvog Nila 100 kako povući verde casino bonus posto besplatni automat za igre na sreću Na internetu Uživajte u online igri, Greentube LeoVegas Casino book of ra original Spielsaal Provision: 100% bis 250 unter anderem 30 Freispiele Beste Erreichbar Casinos für legale mega fortune dreams 2 Spielautomaten Glücksspiele in Land der dichter und denker