fetch_feed( string|string[] $url ): SimplePie\SimplePie|WP_Error
- Since
- 2.8.0
- Source
wp-includes/feed.php:804
Builds SimplePie object based on RSS or Atom feed from URL.
Parameters
$urlstring|string[]- URL of feed to retrieve. If an array of URLs, the feeds are merged using SimplePie's multifeed feature. See also <a href="http://simplepie.org/wiki/faq/typical_multifeed_gotchas">http://simplepie.org/wiki/faq/typical_multifeed_gotchas</a>
Return
SimplePie\SimplePie|WP_Error- SimplePie object on success or WP_Error object on failure.
Hooks fired · 2
2 hooks fire while fetch_feed() runs, in this order:
- apply_filters( wp_feed_cache_transient_lifetime )filterline 836 (+32 into the body)
Filters the transient lifetime of the feed cache.
- do_action( wp_feed_options )actionline 846 (+42 into the body)
Fires just before processing the SimplePie feed object.
Uses · 10
- apply_filters()Calls the callback functions that have been added to a filter hook.
- do_action_ref_array()Calls the callback functions that have been added to an action hook, specifying arguments in an array.
- get_bloginfo()Retrieves information about the current site.
- __()Retrieves the translation of $text.
- esc_url()Checks and cleans a URL.
- \SimplePie\SimplePie::__construct()
- WP_SimplePie_Sanitize_KSES::__construct()
- SimplePie_Cache::register()
- WP_Error::__construct()Initializes the error.
- \SimplePie\SimplePie::merge_items()
Used by · 6
- WP_Widget_RSS::widget()Outputs the content for the current RSS widget instance.
- render_block_core_rss()Renders the `core/rss` block on server.
- wp_dashboard_plugins_output()Display plugins text for the WordPress news widget.
- wp_dashboard_rss_control()Sets up the RSS dashboard widget control and $args to be used as input to wp_widget_rss_form().
- wp_widget_rss_output()Displays the RSS entries in a list.
- wp_widget_rss_process()Processes RSS feed widget data and optionally retrieve feed items.
Source
function fetch_feed( $url ) { if ( ! class_exists( 'SimplePie\SimplePie', false ) ) { require_once ABSPATH . WPINC . '/class-simplepie.php'; } require_once ABSPATH . WPINC . '/class-wp-feed-cache-transient.php'; require_once ABSPATH . WPINC . '/class-wp-simplepie-file.php'; require_once ABSPATH . WPINC . '/class-wp-simplepie-sanitize-kses.php'; $feed = new SimplePie\SimplePie(); $feed->get_registry()->register( SimplePie\Sanitize::class, 'WP_SimplePie_Sanitize_KSES', true ); /* * We must manually overwrite $feed->sanitize because SimplePie's constructor * sets it before we have a chance to set the sanitization class. */ $feed->sanitize = new WP_SimplePie_Sanitize_KSES(); // Register the cache handler using the recommended method for SimplePie 1.3 or later. if ( method_exists( 'SimplePie_Cache', 'register' ) ) { SimplePie_Cache::register( 'wp_transient', 'WP_Feed_Cache_Transient' ); $feed->set_cache_location( 'wp_transient' ); } else { // Back-compat for SimplePie 1.2.x. require_once ABSPATH . WPINC . '/class-wp-feed-cache.php'; $feed->set_cache_class( 'WP_Feed_Cache' ); } $feed->get_registry()->register( SimplePie\File::class, 'WP_SimplePie_File', true ); /** This filter is documented in wp-includes/class-wp-feed-cache-transient.php */ $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) ); /** * Fires just before processing the SimplePie feed object. * * @since 3.0.0 * * @param SimplePie\SimplePie $feed SimplePie feed object (passed by reference). * @param string|string[] $url URL of feed or array of URLs of feeds to retrieve. */ do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) ); if ( empty( $url ) ) { /* * @todo: Set $url to empty string once supported by SimplePie. * * The early return without proceeding is to work around a PHP 8.5 * deprecation issue resolved in https://github.com/simplepie/simplepie/pull/949 * * To avoid the duplicate code, this block can be replaced with `$url = '';` once SimplePie * is upgraded to a version that includes the fix. */ $feed->init(); $feed->set_output_encoding( get_bloginfo( 'charset' ) ); if ( $feed->error() ) { return new WP_Error( 'simplepie-error', $feed->error() ); } return $feed; } elseif ( is_array( $url ) && count( $url ) === 1 ) { $url = array_shift( $url ); } elseif ( is_array( $url ) ) { $feeds = array(); $simplepie_errors = array(); foreach ( $url as $feed_url ) { $simplepie_instance = clone $feed; $simplepie_instance->set_feed_url( $feed_url ); $simplepie_instance->init(); $simplepie_instance->set_output_encoding( get_bloginfo( 'charset' ) ); if ( $simplepie_instance->error() ) { $simplepie_errors[] = sprintf( /* translators: %1$s is the feed URL, %2$s is the error message. */ __( 'Error fetching feed %1$s: %2$s' ), esc_url( $feed_url ), $simplepie_instance->error() );History
Introduced in 2.8.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/feed.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.