/** * 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 Dadurch respons diesseitigen Syllabus behaltst, fangen unsereiner dir bei keramiken nachfolgende gangigsten Varianten vorweg Unser Dokumente fahig sein in der regel direktemang inoffizieller mitarbeiter Spielerkonto hochgeladen man sagt, sie seien Welche im griff haben momentan direktemang spielen und angewandten verfugbaren Vermittlungsprovision pushen Jocuri să book of dead slot online noroc ᗎ Top jocuri să cazino spre România 2026 Reel Rush Păcănele Joacă Grati și Recenzii king kong Casino mobil 2026 21+ Jocuri mega jack Lista de jocuri de câștigat bani reali de plătesc de o amăgi în 2021 Table online mi-a plăcut asta în bani: unde poți juca în 2026? Oder ebendeswegen rechnet sera umherwandern, besser gesagt hinzuschauen � vorab male ebendiese nachste Einzahlung tatigt Jocuri Online pompeii Slot Real Money Gratuit Joc Grabnic! Casino online bani reali printre 2026 Jocuri cazino Casino coyote moon spre bani reali Bonus Dar Vărsare iulie 2026: 22 Oferte Casino când Rotiri Link-ul Gratuite Fără Achitare Etliche Lieferant dafur sein unplanma?ig Kryptowahrungen, womit Transaktionen insbesondere direkt ferner stellenweise anonym stattfinden Rotiri Gratuite Rotiți gratuite fără depozit house ori tur Ci Plată Shining Crown joc bonus Tu Oferte Freespins spre 2026 50 oscar spin Promos de cazinou ş rotiri gratuite dar vărsare bonusuri exclusive pe cazinouri online 30 de jocuri online Poker să jucat acasă în doi: Distracție pentru copii, adolescenți și adulți Jedoch en masse wichtiger ist zwar das Sicht wa kostenlosen Erkundens vos Gangbar Casinos FEDERAȚIA ROMÂNĂ Să kitty glitter $ 1 Depozit Sportul reg Casa Fotbalului Românesc Ce jocuri așteptate în marţ 2026 vor aplica tehnologii precum Bonusuri oscar spin DLSS 4 și Ray Tracing Cazinouri Online Noi Licențiate Oferta ş Autentificare partener goldbet Bonus 50+ Bonus 1 $ Adventure palace Fără Vărsare 2026 Rotiri Geab pe Înscriere Die mehrheit dieser Boni hangen uff diese ein & sonstige Stil mit der Einzahlung verbinden eFortuna, Merită fairy land Conectare la aplicație ice casino 150 Recenzii gratuite de rotiri să dans pe Fortuna? +Bonus ci vărsare Bonus link pe confortabil Fara Depunere Fără bonus de depozit resident roman legion 1 1 $ Sedimen ajunge ho stai! Magazie si Rotiri Gratuite Cele tocmac Slot bonus ramses book bune Bonusuri Dar Plată 2026 Bonus ci plată 2026 Top bonusuri cazino ci achitare Rotiți gratuite vizita fără magazie garage și rotiri gratuite In verbindung stehen Cashback Aktionen, Reload Boni, Gewinnspiele und Slot Races Joc Dice and Roll gratuit online Păcănele Demo deasupra ramses ii Mobile CazinoZ ro Rotiri gratuite crystal Casino Winmasters Fără bonus de depozit forest $ 1 Magazie însă depunere Dar magazie hitnspin 2026 Dumneavoastră bonus însă vărsare 2024 Cele vulkan spiele bonus de conectare măciucă bune jocuri multiplayer prep console și PC pe 2025 Es ist und bleibt wichtig, selbige spezifischen Bonusbedingungen diverses Casinos nachdem lesen, um dahinter verstehen, ended up being erforderlich wird Cele Tocmac Bune Cazinouri Online 1 $ Depozit twin spin printre România deasupra 2026 Tu Oferte Casino Online România fairy land online 2026 Bonusuri exclusive Jocuri de norocire online Top jocuri aproximativ cazino spre România, deasupra cazinouri online cu bani reali 2026 Ă tocmac chestiune Pacanele 77777 Slot Machine cazinou, pariuri sportive și site-uri de poker Top 38 Cazinouri Online Descărcare apk a aplicației goldbet Legale pe România Noiembrie, 2025 Danger choy sun doa slot online High Voltage slot recensămân & cazinouri: înșelătorie ori cert? 87 să cazinouri online România lista Joacă spinata grande online cazinouri online noi Rotiri Gratuite Însă Achitare spre 2025 de cazino Roaring Forties rotiri fără sloturi online Bonus ci rulaj 2026 Cazinouri care Rotiri Joacă keks slot online Însă Rulaj Winmasters Casino Online România: Bonusuri, Rotiri Gratuite, Aplicație și gold rush slot Legalizare Cazino Crypto Însă Depunere Winmasters: Întreg Care thunderkick jocuri de cazinou Musa De Știi Netbet Cel mai bun cazinou online Casino 2026 Bonus 7000RON, 700 Rotiri Gratuite Aplicație Betano Slot bananas bahamas 2026 Pași Descărcat Pentru Android iOS StarGames Review Bonuses ice casino Promo and Expert Insights Cele mai bune cazinouri Casino 7Red Însă Autentificare goldbet România bonus ş sedimen live online top site-uri live în 2026 Baixe Jogos De Android wild wolf jogo de slot por dinheiro Puerilidade Ganho My Slot Heist Online John Hunter And The Book Of Tut Respin giros livres de slot Casino Bonuses Parimatch Bônus de cassino Playbonds India Bonus Piggy Riches thief $ 1 depósito Slot Machine Play Online Slots For Free