Get all posts in RSS

时间:2010-12-01 作者:bhamrick

我想知道如何/是否可以访问wordpress设置中定义的最新X篇帖子。我见过通过RSS迁移所有博客内容的插件,还没有看到它们的方法。

基本上我管理着几百个WordPress博客,我正在为我的客户构建一个新闻稿生成器。他们希望能够选择一些帖子,并将摘录显示在时事通讯正文中。这些网站分布在多个服务器上,新闻稿生成器构建在我们的CRM之上,因此很难直接查询数据库。RSS将是最干净的,但我似乎不知道如何一次访问10个以上的内容(当admin中设置了10个时)。

有什么想法吗?

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

Codex提供了关于如何使用的示例片段post_limits 筛选以覆盖在管理中为提要设置的金额。

if (isset ($query->query_vars[\'feed\']) and ($query->query_vars[\'feed\'] == \'ics\')) 
    add_filter(\'post_limits\',\'__return_empty_string\'); 

http://codex.wordpress.org/Function_Reference/query_posts#Usage_Tips

SO网友:EAMann

不幸的是,大多数社区普遍不赞成你所做的事情。我听到你的要求是:

远程检索超过默认数量(最近发布的帖子)的一种方法,可以检索站点的所有已发布帖子,而无需与站点本身进行任何直接交互(使用RSS)

    这是一种常用的做法,用于从博客中刮取内容并在未经原始作者许可的情况下重新发布。这就是为什么我说人们普遍不赞成它。大多数博客作者投入大量时间和精力开发优秀内容,因此让第三方轻松利用他们的辛勤工作为自己的网站添加SEO信用是。。。好圆滑的。

    也就是说,我现在假设你有合法的理由从700多个网站上删除内容。在这种情况下,我建议使用一种单独的编程方法,而不是RSS。如果您拥有所有这些站点的合法登录信息(即它们是您的站点,而不是其他站点),您可以使用WordPress内置的XML-RPC功能获取内容。

    使用内置的XML-RPC库将请求传递给metaWeblog.getRecentPosts 指定博客的ID(对于单个站点通常为0,但在多站点中可能不同)、WordPress用户名、WordPress密码以及要获取的帖子数(将此设置为-1以接收所有帖子)。

    另一个站点将响应(一个相当大的)XML文件,其中包含您可以使用所需内容的内容。这一切都可能发生在幕后metaWeblog.getRecentPosts 请求将为您提供比RSS提要更多的信息(包括自定义字段,这可能对您很重要)。

SO网友:Denis de Bernardy

如果记忆有用,那么将-1作为帖子数传递也有同样的效果。但不完全确定它是如何被放入URL的。

另一方面,如果你真的想拥有700多个站点,可以考虑每天从一个稳定的分支、一个私有存储库中使用svn更新或git提取的cron。。。结合每天对wp admin/upgrade的http调用。php。在升级或调整网站时,它会为你省去很多麻烦,因为它会自动完成。

SO网友:farinspace

虽然不是“所有帖子”,但我认为limit param更有用。

我建议直接过滤“posts\\u per\\u rss”选项,如下所示:

add_filter( \'option_posts_per_rss\', \'my_posts_per_rss\' );
function my_posts_per_rss( $option ) {
    if( isset( $_GET[\'limit\'] ) ) {
        return (int) $_GET[\'limit\'] ?: $option;
    }
    return $option;
}
然后可以这样访问提要:http://example.org/category/acme/feed/?limit=999

SO网友:mireille raad

您可能想使用一些RSS聚合器,如FeedWordpress

SO网友:vegaskevin

如果转到“设置”>“阅读”>“并将“联合提要显示最新”中的值更改为适合您的数字,它将显示您输入的提要数。

结束