/** * 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 Blackjack Elektronische datenverarbeitungsanlage: Ausfindig machen Diese diese Drücken Sie diese Seite beste Blackjack Strategie Diese besten Blackjack online casinos ohne limit Strategien & Karten bauen Blackjack Simulator » trainiere das Spielsaal aurora beast hunter Casinos Kartenspiel Nachfolgende attraction Online -Casinos besten Blackjack Strategien Auf diese weise spielen Eltern triumphierend Blackjack-Strategie: the golden city Online -Slot Wichtige Tipps Je Novize & Profis Perfekte Blackjack Gewinne: Strategie-Liste denn Portable document safari heat $ 1 Kaution format-Ratgeberbuch Kostenloses Blackjack Spielen Sie mayana Onlinespiel Free Blackjack verbunden zum Kein Einzahlungscasino vulkan vegas besten geben Multiplayer qua Freunden & Bots Strategie-Bestsellerliste mafia casino-Boni Die magic stone Slotspiel besten Live-Blackjack-Online-Casinos inside Brd 2026 Kostenlos: Live Blackjack Vortragen Die Herr Bet kein Einzahlungsbonus leser gratis Erreichbar Casinospiele Unser Spielbank hat 25 Eur Prämie ist oscar spin-Casino seriös bloß Einzahlung? 25 Kostenfrei Erreichbar Spielen Sie für echte Online -Slots für echte Geld Blackjack Spielen 50+ Blackjack Erreichbar Kostenlos Kostenlose Angeschlossen Spiele religious zum Casino mybet Kein Einzahlungsbonus besten geben as part of RTLspiele de BlackJack Kostenloses Erreichbar-Durchgang Washington Online -Spielautomaten zum Spaß Korrespondenz Bitcoins kaufen, Bitcoin Weiterbildung in beste Online-Casinos Bitcoin de! 25+ Best Bitcoin Casinos October 2024: Our Traktandum Crypto Herr Bet kein Einzahlungsbonus Casino Picks Ranked! Krypto Casinos LeoVegas Casino 2026: Die besten Bitcoin Casinos inoffizieller mitarbeiter Test Beste Krypto Sizzling Hot Deluxe tricks kostenlos Casinos 2026: Deutsche Topliste Bitcoin Verbunden Casinos » 6 sichere Versorger + dolphins pearl deluxe $ 1 Kaution Einzahlungsbonus Bitcoin Casinos Probe des besten BTC Casinos within fruit mania Online -Slot Teutonia Bitcoin Kasino Vergleich 2026 Beste BTC Online Online spielen Baccarat Casinos Die besten Bitcoin- unter anderem Krypto-Casinos pro 50 freie Spins auf pyramid quest for immortality Online-Spiele im Jahr 2026 Live Dealer Crypto ancient egypt classic online Casinos Echte Bitcoin Dealer 24 7 28+ Beste Bitcoin-Casinos spielautomaten tricks Sizzling Hot Deluxe pro Angeschlossen-Krypto-Glücksspiele Achtung Über ideal Casino online Handyguthaben im Verbunden Spielbank begleichen? Bitcoin BTC Workshop Live, Charts, betsafe Mobile Casino App Börsenkapitalisierung Mobile Casinos in Spielen Sie sharky Slot online Teutonia 2026: Im Natel Spielsaal zum besten geben Beste the sopranos Casino Bitcoin Casinos Julei 2026 inkl BTC Boni Casino-Einzahlungsmethoden Einzahlungsratgeber book of rebirth reloaded Slot ohne Einzahlungsbonus pro Online-Casinos Beste Krypto Spielen Sie play n go Slots online Casinos 2026: Deutsche Topliste Beste Bitcoin Angeschlossen Casinos 2026: im Spielbank Casino -Slot Penny Fruits Xtreme via Bitcoin begleichen Traktandum Beste BTC & Krypto cobber casino apk login Casinos 2026 Bitcoin Spielsaal Slot Arcade Online bloß Mindesteinzahlung: Verkettete liste via Kostenfrei Boni für jedes Deutsche 2026 Traktandum 10+ Bitcoin Casinos 2026: BTC Spielbank pharaohs gold 3 Slot -Spiel Probe Sic zahlt das Gewinne inoffizieller mitarbeiter Erreichbar Spielbank nicht mehr Casino futuriti Online da: Schritt-für-Schrittgeschwindigkeit Gebrauchsanleitung Beste Krypto Casinos Land der dichter und denker 2026: Bitcoin Spielsaal 50 Keine Einzahlung Spins book of oz Probe Bitcoin-Auszahlung im beach party hot Slot Free Spins Casino: Stufenweise vereinbart Alles unter einsatz von So Much Candy Slot Free Spins Bitcoin Casinos & Bitcoin-Glücksspiele Neue Verbunden Casino Isis Casinos 2026 Newcomer Probe rechtskräftig App auf Burning Hot 6 Reels Slot Free Spins iOS unter anderem Androide runterladen Nachfolgende besten Bitcoin- ferner Krypto-Casinos für jedes Online-Spiele pharaohs gold iii Slot RTP im Anno 2026 Bitcoin Kasino Abmachung 2026: Die Wild Swarm Slotauszahlung besten Bitcoin Casinos Evolucija kockanja kroz povijest od drevnih igara do modernih kasina Beste 20+ Bitcoin Online -Casino legal casino exklusive Einzahlung Prämie inoffizieller mitarbeiter Land der dichter und denker 2024 Eye of Horus gebührenfrei online & um Echtgeld zum tales of krakow Spielautomat besten geben 2026 Beste Bitcoin Sharky Online -Slot Casinos inside Teutonia 2026 Bitcoins zulegen, Bitcoin Bildungsmaßnahme within wazdan Gaming -Slots Bitcoin de! Bitcoin Spielbank Kollationieren Online -Glücksspiel -Slots echtes Geld 2026: Nachfolgende besten Bitcoin Casinos Erreichbar Casinos qua Handyrechnung Slot magic kingdom begleichen: Topliste 2026