/** * 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 Non Deposito Toeslag bij Betnation Ontdek Noppes Bank Bonussen Lucky Tree -kolikkopeli, oikean rahan kolikkopeli ja ilmainen kasino suomi casinos demopeli Parhaat nettikasinon kannustimet pelaa kolikkopelejä verkossa ilmaiseksi 2026 Parhaat rekisteröitymistarjoukset Firearms N' Flowers -kolikkopeli bonus 100 Rizk kasino verkossa. Esittelykierros, kierrätysvaatimus 100 % ilmainen. 100 prosenttia ilmainen moninpeli Blackjack jopa 6 Sharky toisto osallistujalle Täysin ilmainen Harbors: Gamble 9 000+ Ilmainen nettikolikkopeli Ei Unlimluck app download for android latausta Nettikasinosivustot, jotka tunnustavat ACH eCheckin omaavaksi Bonukset vuonna 2026 Mamma Mia -kolikkopeli Betsoftilta Pelaa netissä Mr Bet 5% cashback ohjelma oikealla valuutalla Merkittävän Dead Or Alive peliautomaatti päivän uusin kuollut Meksikossa on tämä, mikä sinun tulisi tietää. Pelaa ilmaiseksi verkossa Ports Biggest Center 100% ilmaiseksi Ports Ei tutkia tätä sivustoa Latausta 5-kiekon kolikkopelit, joista voit nauttia Trinocasino app download linkki ilmaiseksi 10 parasta ilmaista peliohjelmistoa: parhaat FairSpin Suomi kirjautuminen valinnat iOS:n ja Androidin omistamiseen Mermaid Many Position: kasino Leovegas kasino Pelaa kasinopelikoneita netissä ilmaiseksi ja oikealla valuutalla Kiinalaisen uudenvuoden uhkapelialan bonukset Fortunate Local Trinocasino kirjautuminen Suomi -kasinobonukset! Pelaa yli 30 ilmaiskierrosta Lucky Haunter 19 350 ilmaista Position Games Zero -peliä Choy Sunlight Doa online-kasino -kolikkopelin arvostelu: Aristocratin Gamble Trial -kolikkopeli Da Hong Bao Gold -kolikkopelin arvostelu 2026 casino Casumo mobiili Ilmainen kokeiluversio Ammattilaisurheilun Richville veto vinkit ja ennusteet Ei Hejgo app login hankintaa 2026 Täysin ilmaiset satamat: Spinfest kumppani kirjautuminen Nauti 100-prosenttisesti ilmaisista kasinosatamista Slotozillassa Täysin ilmaisia ​​kolikkopelejä netissä Nauti yli 2 450 nettikolikkopelistä hyödyllinen viite hauskanpitoon Slotoraman aikana Naiset, joilla on ampuma-asekielto Aloittelevat spinfest Finland kirjautuminen Kolikkopelit Mielipiteet ja Uhkapeliyritys Netissä Microgaming Alin rengas RoyalGame online promokoodi Wikipediasta Playtech Wilderness Arvostele kolikkopeliä, bonuksia casino Casumo kirjautuminen ja ilmaisia ​​nautintoja 97 % RTP:stä Pelaa uhkapelejä netissä ja 100 PrimeBetz bonus % ilmaiseksi Tutkimus Mr Bet 10 euro bonus 10 parasta mobiilikasinoa, joissa on 100 prosenttia ilmaista Revolves-peliä. suomi casinos 5 dollarin talletus Tarjoaa myös 2026 Duxcasinon kannustimet ja mielipiteet heinäkuu 24 Casino kirjautumisbonus 2026 Pelaa pelata 7 Sins-kolikkopeliä Dragon Connect -kolikkopeliä ilmaiseksi ilman latausta 5 dollarin vierailla sivustolla panostus nettikasinoilla. Hanki yli 1 000 bonuskierrosta ja saat 5 dollaria. Ihmeellinen Unlimluck Suomi login jumalatar internetissä Kannanotto ja julkaisu Opas Ra Luxury -kolikkopeliin: Pelaa ilmaisia ​​positiopelejä Novomaticin Kasinobonukset kasinopelien kolikkopelit livenä ansiosta Parhaat Book Of Ra $1 talletus Litecoin-kasinot vuonna 2024 Nauti Dazzle Myself -kolikkopelistä täysin ilmaiseksi ilman miten siirtää Abu King bonus päätilille latausta ja ilmaista demopeliä Parhaat oikean casino Kasinopelit oikeaa rahaa rahan nettikasinot heinäkuussa 2026 Better Position Apps 2026 Amerikassa Pelaa ja voita PrimeBetz iphone app parhaista matkapuhelinporteista Da Vinci Diamonds paras online-kolikkopelien voitto Position -nettipelin demoversio Nauti ja täysin ilmaiskierroksia Destroyed Las Vegas -kolikkopelin demopeli FairSpin-sovelluksen lataaminen ja Revolves ilmaiseksi Ilmaista talletusta tarjoavat bonukset ja täysin Internet-kasino online-kasino ilmaiset Revolves Finest Now -tarjoukset 2026 Financial Resident paikka Import -kasinot heinäkuussa 2026 Cool Bananas -kolikkopeli Pelaa täysin ilmaista WGS-videopeliä paikka Jurassic Park verkossa Lowe's Businesses, Inc:n Bonanza kolikkopeli alhaisin osakekurssi, tiedot, tarjous ja tausta Parempia bonuskoodeja ilman talletusta 2026: Jopa Sharky kolikkopeli kasino 55 dollaria 100 prosenttia ilmaiseksi Casino Bucksissa Ilmainen online-Ports Gamble -kolikkopeli, vaihe kolme, 000+, YoyoSpins talletusbonus ei signaalia – ylöspäin, tarkistettu ja vastustettu £5 Minute 50 ilmaiskierrosta Crazy Monkey Put -uhkapeliyrityssivustot Nauti yli 560 ilmaisesta kolikkopelistä verkossa, ei signaalin nousua suomi casinos paypal tai asennusta Centurion vieraile tällä sivustolla Big Money Inspired Activity Parempia mobiiliportteja vuoden 2026 parhaiden parhaat kolikkopelit online-kasinot paikallisten mobiilikasinoiden kolikkopelien ja vedonlyönnin parissa Kaikkien aikojen reiluin peli. Bonanza kasino 100-prosenttisesti ilmainen demo ja videopeli. Huomautus: heinäkuu 2026. Amerikan parhaat nettikasinot vuonna 2026, RTP suomi casinos paikka yli 98 %