Randomizing the RSS Widget

时间:2015-05-07 作者:Adam Bell

我想看看是否有一种方法可以让RSS小部件拉入不同的提要(比如说我选择了十个提要之一),并在每次刷新页面时将其显示在小部件中?

有点像这个帖子(Different rss feeds in a single dashboard widget) 除了这个人试图一次显示多个提要,我想在每次刷新页面或转到其他页面时将其从一个提要旋转到另一个提要。所以它只显示一个提要,但每次都不同。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

有一种方法可以实现这一点:

/**
 * Display a random feed in the RSS Widget
 * Activated by the wpse_random_url string in the feed url
 *
 * @see http://wordpress.stackexchange.com/a/187599/26350
 */

! is_admin() && add_filter( \'wp_feed_options\', function( $feed, $url )
{
    // Modify this list of feeds to your needs:
    $urls = [
        \'http://stackoverflow.com/feeds/\', 
        \'http://wordpress.stackexchange.com/feeds\',
        \'http://unix.stackexchange.com/feeds\'
    ];

    // Select a random feed from the above list:            
    if(    class_exists( \'\\SimplePie\' )
        && $feed instanceof \\SimplePie 
        && false !== strpos( $url, \'wpse_random_url\' ) 
        && method_exists( $feed, \'set_feed_url\' ) 
    )
            $feed->set_feed_url( $urls[ array_rand( $urls ) ] );

    return $feed;
}, 10, 2 );
其中,我们的提要url必须包含wpse_random_url 一串

例如,我们可以使用当前站点的提要,使用random\\u url GET参数:

http://example.tld/feed/?wpse_random_url
并将其添加到RSS小部件的url字段:

Random feed GET parameter

改进这个迷你插件的下一步是引入一种直接从后端添加提要列表的方法,而不必在代码本身中对其进行修改。

结束