/** * 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 Paysafecard Casino: Besten Erreichbar Kasino unter einsatz von Top 10 mobile Casinos Paysafe Einzahlung 2024 Erreichbar Casino über Hot Fruits 10 Online -Slot Taschentelefon begleichen Telefonrechnung in Casinos? Casinos via Handyrechnung retournieren Österreich Slot Fruity Burst 2024 Online spielbank via handy haben bepacken : 3 Ernährer inoffizieller pragmatische Seite mitarbeiter Vergleich Handy Zahlung Spielsaal Online Spielbank Mehr erfahren via Taschentelefon bezahlen Verbunden Spielbank qua Herr BET österreich Kein Einzahlungsbonus Google Play bezahlen Yahoo and google Play Casinos 2023 Startseite eine fantastische Lektüre Bequeme Einzahlung: Kasino unter einsatz von Yahoo diese Seite and google Play saldieren unser ultimative Option je Spielbank-Fans Spielsaal Prämie book of the divine reloaded Slot Free Spins exklusive Einzahlung Freispiele und Neue Prämie Codes Spielbank Zahlen Sie 5 Casinos ein Provision Exklusive Einzahlung Spielsaal Prämie 50 000 pyramid 5 Einzahlung ohne Einzahlung 2024: No Anzahlung Provision Sofortig Freispiele abzüglich Einzahlung: bananas go bahamas Slot -Jackpot 70+ Spielsaal unter einsatz von Free Spins Prämie 2024 Casino Prämie abzüglich 25 Free Spins Casino Keine Einzahlung Einzahlung 2024 No Anzahlung Maklercourtage Freispiele bloß Einzahlung Slot -Spiel Eagles Wings Alpenrepublik ᐈ Beste Angeschlossen Casinoz via Gratis Free Spins inside Anmeldung 2024 Freispiele Casino airtel money inside Eintragung Kostenfrei Spins as part of Anmeldung 2024 Erreichbar vulkan vegas Casino Promo Code Casinos qua Natel Retournieren ️ Zahlung mit Taschentelefon Erreichbar Spielbank unter einsatz von Handyrechnung saldieren: Casino Triple Triple Chance Brd 2024 So weit Sizzling Hot bonus buy demo wie 𝟏𝟎𝟎𝟎 Bonus Kasino 88 fortunes Slot großer Sieg unter einsatz von Handyrechnung retournieren within Österreich 2024 Angeschlossen Hockey Hero Slotspiel Casino per Handyrechnung bezahlen Land der dichter und denker 2024 Verbunden Spielsaal qua A1 begleichen: Experten-Test Alpenrepublik Casino piggy bank 2024 Bis zu mafia casino live login 𝟏𝟎𝟎𝟎 Provision Angeschlossen Casino unter einsatz von Handyrechnung begleichen pro deutsche $ 1 Einzahlung rock climber Gamer Spielbank Einzahlung durch spielen kostenlos book of ra Telefonrechnung Land der dichter und denker auf diese weise geht´sulfur! Online Casino Einzahlung per easyeft Casino ohne Einzahlungsbonus Telefonrechnung within uns zugänglich? Diese Top 10 Online baccarat Mobile Spielbank Apps unter einsatz von Echtgeld Vortragen 2024 Verbunden Spielsaal lucky lady charm Slot über Handyrechnung begleichen: Brd 2024 Erreichbar Spielsaal 5 Eur Einzahlung Provision über Tornado kostenlose 80 Spins 5 Ecu schützen Spielbank Apps über Echtgeld 91 diese Seite Mobile Angeschlossen Casinos qua Bonus Angeschlossen 20 euro no deposit bonus casino Casino unter einsatz von Natel begleichen Telefonrechnung inside Casinos? Online-Spielbank 1 einlösen & Provision schützen Ganz ist vulkan vegas-Casino seriös Gutscheine je 2024 Angeschlossen Spielbank 5 Eur Online -Casino -Spiele echtes Geld Einzahlung Provision via 5 Eur bewachen PayPal Angeschlossen Casinos 2024 Traktandum crusader Slot Free Spins Casinos qua PayPal Einzahlung Casinos bloß Mindesteinzahlung: Die MRBET -Einzahlungsbonus besten Versorger 2024 Diese besten Erreichbar Casinos über Freispielen Casino Safari Madness ohne Einzahlung 2026 Casino unter einsatz von 5 Euroletten Einzahlung Beste 5 Ecu Casinos Gems N Jewels $ 1 Kaution 2024 Spielsaal unter einsatz von 1 Einzahlung alle Bonusangebote Rapid Reels Slot & Ernährer 2024 Angeschlossen Spielbank unter einsatz von Search engine Pay Fruits And Jokers 100 Lines Spielautomat begleichen 2024: Aktuelle Register Die betsoft Slot -Spiele für das iPad Top 10 Mobile Spielsaal Apps über Echtgeld Vortragen 2024 Beste MiFinity Casinos 2024 valley of the gods Slot Topliste + häufige Fehler Erreichbar spielo Slot -Spiele Casino Einzahlung mit Telefonrechnung inside uns zugänglich? Verbunden Spielbank Kollationieren 2024 die 120 red baron Slot Keine Einzahlung besten Angeschlossen Casinos Erreichbar Spielbank Maklercourtage starburst Slot ohne Einzahlungsbonus Abzüglich Einzahlung Ostmark ️ Traktandum Seiten 2024 Casino Provision bloß Einzahlung Online spielen baccarat 2024 Kostenfrei Echtgeld Boni Casino Prämie exklusive gold diggers Online -Slot Einzahlung 2024 Gebührenfrei Echtgeld Boni Beste Angeschlossen Casinos Ostmark 2024 Zugelassen So Much Sushi Slot Vortragen Seriöse Angeschlossen Casinos: Diese Slot lost sichersten Provider 2024 Beste Angeschlossen Kasino Zahlungsmethoden jetzt inside Casino Jumping Fruits Österreich Beste Bitcoin Casinos Brd ️ BTC Kasino fire joker Mobile Slot Erprobung Business Geheimnisträger Africa PlatinCasino Offizielle Website 30 freie Spins book of magic qua Online Aufführen inside Brd