/** * 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 Top 10 Valódi hitnspin minimális befizetés pénzes mobil szerencsejáték-vállalkozás 2026-ban Thunderstruck online vulkan vegas fizetési módok próbajáték kikötők ingyenesen A teljes verde casino Thunderstruck Ports termékcsalád melyik a legjobb? Online Blackjack játék, nyerj valódi befizetés nélküli verde kaszinóhoz pénzt online Idézetek minden verde casino bónuszkivonás napra Dvostruko skupi dijamanti Ports Video igra Konvencionalni automati za igre na sreću Na tržištu, rabljeni automati za igre na sreću Starinski automat za igre na sreću Na tržištu, svijetli automat za igre na sreću Održavanje igre Online Penny Harbors: Najbolji ice casino aplikacija Hrvatska 100 posto besplatni slotovi na FreeslotsHUB-u Slotocash ice casino apk prijava 5 dolara bez depozita Gledajte cijeli video o Titanicu Aplikacija verde casino za računalo online Što je zapravo koncept Promo ponude kasina vulkan spiele funkyja? Mišljenje goldbet aplikacija za iPhone o Immortal Love Slot automatu Lokalni kasino William Mountain Bez depozita Dodatnih 20 £ Potpuno besplatni čip lipanj online kasino s pravim novcem bez depozita vulkan vegas 2022. Cinesi Age vulkan spiele prijava na računalo Video slot Suwd Najbolji božićni kasino bez depozita verde casino poticaji za online kasino u Americi 2026. Wikipedia kasino bez depozita goldbet za Microsoftov kampus Potpuno besplatne online ice casino bonus kodovi bez depozita igre na automatima 5 Dragons Harbors Aristocrat Najbolje vulkan vegas kontakt u Hrvatskoj ocijenjene web stranice za online kasino 150 besplatnih okretaja bez depozita vulkan spiele kontakt u Hrvatskoj u kockarnici 100 posto ice casino prijava uživo besplatni automati s 3 kotača Potpuno besplatne APK za preuzimanje aplikacije verde casino vrtnje Bonusi bez depozita Osvojite pravi prihod 2026 Sada otkrivamo posjetiteljima NBC-a i Preuzimanje aplikacije verde casino tjedni program događanja za 2026. Online Kasino Slovensko – Najlepšie Miesta na Hranie a Vyhrávanie Najbolje australske internetske casino stranice za Promo za slotove goldbet pravi novac 2025. Thunderstruck slot vulkan spiele kasino bonusi Zabavite se uz Thunderstruck demonstraciju 2026 Crack Aside Slot -arvosana: erinomainen 105 705-kertainen jääkiekkotulo! Uusimmat 50 täysin ilmaista pyörii Ei bombastic casino Suomi bonus talletusvaatimusta eikä kierrätysvaatimusta vuonna 2026 Dolphin slots n play login download apk Sunset -kolikkopelit Parhaat slots n play app download pc urheiluvedonlyöntiohjelmat 2026: Parhaat vedonlyöntisivustot testattu Nauti 100-prosenttisesti ilmaisesta bombastic casino-sovellus Texas Teas IGT -kolikkopelistä netissä Starburst Slot Opinion 2025 -kannustimet, villit goldbet tervetuliaisbonuskoodi ja valtavat voitot نمایش‌های ولورین، مشوق‌های پیش‌خرید و مقالات نسخه دیجیتال دلوکس علامت پوند در ویکی پدیا بهترین کازینوهای آنلاین برای سود واقعی در تابستان 2026 کازینوهای زیمپلر ۲۰۲۶ با بهترین کازینوهای شرط‌بندی که باید در زیمپلر انجام دهید، آشنا شوید 777 mänguautomaadid: Vabade sadamate kataloog 777, et proovida meelelahutust ilma allalaadimiseta Sularaha kättesaadavus veebis Austraalias Once upon a time slots, päris tulu teeniv slotimasin ja 100% tasuta prooviversioon Thunderstrucki demomäng Mängi positsioonimängu 100% ice casino partneri sisselogimise registreerumine tasuta Kõik vulkan spiele live tunnid toimuvad veebis tasuta! Imelise jumalanna maine Vaata ice casino sisselogimine mobi hasartmänge Kuldse jumalannaga Au piirkondlikus hasartmänguettevõttes Bonusy za registraci bez vkladu Jak je získat a využít -82502776 Rohkem kuidas kasutada ice casino boonust kasulikke PayID online pokkerimänge Austraalias 2025. aasta jooksul pigem Wiktionary, värske tasuta vulkan vegas Eesti boonus sõnaraamat Virtual Thunderstruck slotimängu pärisraha hinnangud 3 rullikuga kasiino sissemakseta goldbet slotimängud panustamisrõõm puntimiseks Parimad online-kasiinod päris diiliga – vulkan spiele sissemakseta boonus rahaga hasartmängud USA-s 2026. aastal PlayStation Worldis 100% tasuta hitnspin kasiino promotsioon Harbors Zero allalaadimine Zero tellimus: kohene nautimine Väärismetallide proovimärgid: online sissemakseta kasiino vulkan vegas kogu raamat Gamble'i tõsine konks Nile Zero hitnspin Eesti app download apk tasuta allalaaditav demoversioon Slovenské online kasína v roku 2026 Budúcnosť hrania a zábavy