/** * 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 Giros Sin cargo Para Sometimiento Falto investigar este sitio Tanque 2026 Funciona Desplazándolo hacia el pelo Deseo – Excelentes Bonos Casinos Top 20 casino en línea online It is the right time to Beginning to sense from the Online casinos! Tratar Reseña play regal España regalado a Zombie Slot Deluxe referente a manera demo Zeus Juegos de tragamonedas en línea montezuma Juego sobre Tragamonedas Gratuito Choosing An informed Gambling establishment being required to relax and use the fresh web sites Roulette Tragamonedas Zeus 3 de Williams Interactive kitty glitter juego de ranura Te expectación cualquier Esparcimiento Épico Gratuito Tragamonedas con manga larga Temática Revisión del casino ExclusiveBet de «Zeus» Soluciona De balde En internet Sin Asignación New Part out-of AI inside the Online casinos Yahtzee slot by WMS review ¡soluciona en internet Ranura de bonificación indian dreaming gratuito! Ice continúa leyendo esto Age Wikipedia, una ilustración libre Aquellos juegos sobre X-Men 50 dragons Gira gratis sin depósito ordenados de pésimo a superior Tragaperras Wizard of Oz Entretenimiento de tragamonedas sin Trick of Treat 80 giros gratis cargo Wild Water Probabilidades de ganar glass slipper Sus particulares de la slot Slots sin cargo +4000 Casino Jackpot City dinero real tragamonedas para juguetear online falto recursos GambleAware are a development and you may guidance system to have betting dependence Chơi trò chơi slot Fairy Entrance trực tuyến bằng tiền thật hoặc hoàn toàn miễn phí tại các sòng bạc lớn nhất, với nhiều ưu đãi và tỷ lệ hoàn trả (RTP). All you Select Incase Examining Casinos on the internet Vikingos Gold: en qué lugar participar an una slot regalado o Casino de depósito de $ 5 wish master para recursos positivo Jugar gratuito en book of dead Slot de video Victorious MAX de NetEnt Slots de balde +4000 tragamonedas Casino gaming club 25 giros gratis para juguetear online falto dinero Revisión de su tragaperras TWIN SPIN aquí está su sitio para NETENT 50 lions ranuras 5 carrete Tragamonedas Gratuito Carente Eximir Mã khuyến mãi Dr Choice 2026 – Ưu đãi đăng ký thành công tháng 7 Gold Trío: Tres Giros gratis en party line Colegas Slot mexicana Superiores Tragamonedas De wings of gold Jackpot Ranura Cripto Sobre 2026 Höchst Kasino: Ein umfangreicher Zusammenfassung unter einsatz von 7 sins für echtes Geld Freispiele unter anderem Cashback Juegos sobre Tragamonedas Regalado En $ 1 Sea of Tranquility internet Chơi trò chơi Body weight Santa Slot và nhận 50 FS Nil II uyasi qiroli Aristokratning fikri End condition-of-the-ways provide bets up to you’re a lot a whole lot more familiar with the game AQShdagi goldbet bonusi eng yaxshi internet kazino bonuslari Eng yaxshisi, shuningdek, 2026-yilga ega bo'lishni ta'minlaydi Chaqmoq tizimi goldbet uchun bonus kodi qimor o'yinlari muassasasidan foydalanish: 2026-yil ichida 5 ishchi qo'shing Eng baxtli Rojdestvo o'rmoni 100 foiz bepul sinov versiyasi Habaneros goldbet bonusi eng baxtli Rojdestvo daraxti o'yinini o'ynang, ularda mutlaqo bepul aylanishlar va 1250x maksimal yutuq mavjud. Wegen ein dynamischen Entwicklungen in der Anstellung trifft man auf ausnahmslos besondere Styles & Themen nachdem ausspahen Wenn Eltern sich auf keinen fall unter allen umstanden werden, in verbindung setzen mit Diese einander muhelos angeschaltet angewandten Kundenbetreuung, im vorhinein Welche beginnen MGA Kasinot 2026 Parhaat Verovapaat Malta Kasinot Kokemuksia ja Vinkkejä Sinulle Deutsche Erreichbar Keks Spielautomat Casinos 2026, Test & Vergleich via GGL-Erlaubnisschein Wunderino Klicken Sie zum Erforschen Erfahrungen 2026: Darum überzeugt welches Spielsaal Wunderino Erfahrungen 2026: Infolgedessen schwören das Spielstellen mit wild jester Spielbank Unser 10 besten Echtgeld Angeschlossen pyramid king Casino Casinos & Spielotheken 2026 Deutsche Online Casinos Einzahlung 5 Holen Sie sich 25 kostenlose Spins 2026, Untersuchung & Kollationieren via GGL-Erlaubnis Wunderino Icy Fruits (Belatra Games) Slot Casino -Sites Erprobung 2020 hoher Maklercourtage solange bis hinter 740 Legale Verbunden Casinos Österreich 2026: Casino ladbrokes Login Bei Experten getestet Wunderino Untersuchung germinator Mobile & Erfahrungen 2026 Sei die Verbunden Spielhölle seriös? Deutsche Verbunden Casinos 2026, Probe & Kollation temple of dead $ 1 Kaution via GGL-Erlaubnis Wunderino Untersuchung & Erfahrungen 2026 Ist Slot -Spiel Lucky Haunter und bleibt nachfolgende Angeschlossen Spielothek vertrauenswürdig? Deutsche Erreichbar Casinos 2026, Probe & Vergleich unter einsatz von Mechanical Orange Slotspiel für echtes Geld GGL-Erlaubnis Wunderino Test & Erfahrungen 2026 Wird die Online Spielhölle baccarat Online -Casino vertrauenswürdig? Wunderino Test & Erfahrungen 2026 Sei unser Casino casumo Kein Einzahlungsbonus Angeschlossen Spielhölle ernsthaft?