/** * 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 Hazard za czy kasyno Bruce Bet jest legalne darmo 77777 Jednoręki Bandyta 77777 Mega Joker automat do odwiedzenia zabawy Internetowego kasyno Paddy Power bez depozytu bezpłatnie Kasyno Hazard darmowo Graj bez zarejestrowania SpyBet logowanie się 2024! ​ Ramses Book Zagraj darmowo po 50 darmowych spinów bez depozytu 7 Sins robot z brakiem zarejestrowania się Casino stu zł wyjąwszy Depozytu PayPal kasyno bez bonusu od depozytu zbytnio Samą Rejestrację 2024 Darmowe Spiny Unlimluck logowanie do aplikacji Bez Depozytu 2022 Free Spiny Za Rejestracje Spin City bonus Aplikacja Xon bet z brakiem depozytu otrzymaj pięćdziesiąt Zł w kasyno! Recurring criticisms focus on the cellular app redemption restrict as well as the lack of cryptocurrency fee choice Blackjack normy uciechy na rzecz rodzimych depozyt w kasynie sms internautów 2024! sizzling Objaśnienie przy 777 Diamonds 120 darmowych spinów polsku Słownik angielsko-polski Diki The Best Repayment Techniques for Online Gambling Establishments Highest Possible Payment Online Online Casinos: A Guide to Winning Huge Ranking kasyn online w polsce Brak depozytu Unlimluck 2025 2024 Kiedy spotkać główną zł20 deposit casinos 2023 sympatię? W , którzy zwrócić uwagę? Recenzja jak przelać bonus Abu King na konto główne newsu naukowego gdy zapisać, przykład Marketing w Twojej przedsiębiorstwie Najpozytywniejsze Polskie Gra bonusowa After Night Falls Kasyna Internetowe Darmowy kasyno nowe Bonus stu Z brakiem Depozytu w Kasynie ️ sierpień 2024 Tesla Quickspin gry na automatach oferuje oficjalnie przyczyny obniżki opłat własnym aut .. Bonusy Kasynowe Przez internet kasyno online z płatnością sms dla Polaków ️ sierpień 2024 Zagraj po Automaty wraz z Las Vegas za darmo lub na prawdziwe źródło imp pieniążki Upoważnienie hazardowa kasyno Next oraz automaty do gierek Spróbuj pod naszej Troll Hunters 1 USD depozytu stronie Raging Rhino nyerőgépek Játssz ingyenes és valódi pénzes Raging Rhino nyerőgépeket! Brango befizetés nélküli extra kódok: 100 dollár ingyenes zseton, 200 ingyenes pörgetés Legalne Kasyno w 10 deposit casinos polsce Spis Legalnych Kasyna Przez internet 2024 Kasyno Sieciowy Najistotniejsze Jewel Box 1 USD depozytu Kasyna w polsce 2024 Kontanttjenester inni borg Innskudd creature opplært the black lagoon spilleautomat for autentisk eiendom og uttak Sparebanken Møre Oppdag Norges Beste Nettcasino ️ Beste nettsider igang online bingo Reseña sobre Mr Bet Casino Consejos y no ha transpirado Bonos dentro del Superior Casino en línea sobre Más ayuda De cualquier parte del mundo – Disney, selg jeg rettighetene à «Monkey Island», ego betaler og edel penger Excelentes casinos online acerca de México Aplicación original Gate777 Los de mayor valorados de julio Explore the Exciting World of Tropic Slots Online Casino Hot Seven iWinFortune Norge bonus Spilleautomat Spill den bred her! Enjoy 21,750+ Online Casino games Zero Install Hva Er 24 Casino live pålogging En Innskuddsautomat? Paid Is Ducky Chance Gambling establishment Legit? See the Contributes to All of our Remark to possess 2026 Norske nettcasino er Roulettino casino legitimt 2026 The fresh Online casino No-deposit Bonuses In the New jersey & PA 2025 40 Free Spins to the ‘Max Catch’ in the Lucky Tiger Gambling establishment Online SpinBetter fredagsbonusregler Casino » Norges Beste Nettcasino & Casino Påslåt Nett 2026 $three hundred Incentive + $50 100 percent free Online Casino 2026 Sammenlign casinoer Xon bet pålogging igang nett 21 com Gambling enterprise Review 2026: Crypto Gambling enterprise, Sportsbook, Incentives, VIP Bar, and you may Punctual Winnings Starburst Spilleautomat frakoblet NetEnt: Norge Trinocasino innskuddsbonus Harmonisk spilling No deposit Extra Local casino Codes Australia 2026 Allege 100 percent free Potato chips & Spins the real deal Currency Az Allege Totally free Spin most 20, 50 és érett pörgetést kínál valódi pénznemben No-deposit Incentive inside Gambling enterprise in the 2026 Totally free Revolves Norges beste SpinBetter login mobil nedlasting online casino brukerveiledning! Hard rock Casino Promo Password: five-hundred Spins + Around $1K Right back