wp_dashboard_cached_rss_widget

Definition:
function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() {}

Checks to see if all of the feed url in $check_urls are cached.
If $check_urls is empty, look for the rss feed url found in the dashboard widget options of $widget_id. If cached, call $callback, a function that echoes out output for this widget. If not cache, echo a "Loading…" stub which is later replaced by AJAX call (see top of /wp-admin/index.php)

Parameters

  • string $widget_id
  • callback $callback
  • array $check_urls: RSS feeds

Return values

returns:False on failure. True on success.

Source code

function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) {

	$loading = '<p class="widget-loading hide-if-no-js">' . __( 'Loading…' ) . '</p><p class="hide-if-js">' . __( 'This widget requires JavaScript.' ) . '</p>';

	$doing_ajax = ( defined('DOING_AJAX') && DOING_AJAX );



	if ( empty($check_urls) ) {

		$widgets = get_option( 'dashboard_widget_options' );

		if ( empty($widgets[$widget_id]['url']) && ! $doing_ajax ) {

			echo $loading;

			return false;

		}

		$check_urls = array( $widgets[$widget_id]['url'] );

	}



	$cache_key = 'dash_' . md5( $widget_id );

	if ( false !== ( $output = get_transient( $cache_key ) ) ) {

		echo $output;

		return true;

	}



	if ( ! $doing_ajax ) {

		echo $loading;

		return false;

	}



	if ( $callback && is_callable( $callback ) ) {

		$args = array_slice( func_get_args(), 2 );

		array_unshift( $args, $widget_id );

		ob_start();

		call_user_func_array( $callback, $args );

		set_transient( $cache_key, ob_get_flush(), 43200); // Default lifetime in cache of 12 hours (same as the feeds)

	}



	return true;

}

3529

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: