wppaste
WordPress

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:

  1. apply_filters( wp_feed_cache_transient_lifetime )filterline 836 (+32 into the body)

    Filters the transient lifetime of the feed cache.

  2. 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

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.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 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.