获取RSS中的所有帖子


10

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

基本上,我管理着数百个WordPress博客,并且正在为我的客户构建新闻通讯生成器。他们希望能够选择一些帖子,并将摘录显示在新闻通讯正文中。这些站点分布在多个服务器上,而新闻通讯生成器则建立在我们的CRM之上,因此直接数据库查询将很困难。RSS将会是最干净的,但是我似乎无法弄清楚如何一次访问超过10个(在admin中设置为10个)。

有任何想法吗?


“管理员设置了10”是什么意思?
gcb 2011年

Answers:


5

食品法典委员会提供了有关如何使用post_limits过滤器覆盖在admin中为Feed设置的金额的示例代码段。

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


1
这可能是一个选择,但我希望避免在700多个站点上修改主题代码。
bhamrick 2010年

1
所以这就是我最终要做的。我的网站分布在少数WordPress-Mu安装中,因此在数百台服务器上实际上不是数百个WordPress实例。问题是,在每个Mu安装中的某些站点上,我仅需要此功能。因此,我编写了一个插件来执行此操作,编写了脚本来更新数据库以在我需要的站点上激活该插件。做完了 谢谢您的帮助。
bhamrick 2010年

21

获取帖子的一种方法是在新闻通讯生成器中调用rss feed的不同页面。这是一种安全的方法,不需要更新各种Wordpress安装:

yourwebsite.com/feed- >获得最近10篇帖子

yourwebsite.com/feed/?paged = 2- >获取下10个帖子

等等。


4

不幸的是,您尝试做的事通常在大多数社区中都不被接受。我听到你要的是:

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

这是一种在未经原始作者许可的情况下从博客抓取内容并将其重新发布的常用做法。这就是为什么我说它通常不被接受。大多数博客作者花费大量时间和精力来开发出色的内容,因此,让第三方轻松利用自己的辛苦工作来将SEO信用添加到自己的网站上是一件好事。

就是说,我暂时假设您有正当理由从700多个站点中抓取内容。在这种情况下,我建议您使用一种单独的程序化方法-而不是RSS。如果您具有所有这些网站的合法登录信息(即它们是您的网站而不是其他人的网站),则可以使用WordPress内置的XML-RPC功能来获取内容。

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

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


2

如果有内存,则传递-1作为帖子数具有相同的效果。不过,并不完全确定如何将其扔入URL。

顺便说一句,如果您真的有700多个站点,可以考虑每天从私有存储库中的稳定分支中进行svn更新或git拉动的cron ...结合对wp-的每日http调用admin / upgrade.php。在升级或调整网站时,它将为您省去很多麻烦-因为它会自动完成。



0

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


0

虽然不是“所有文章”,但我认为limit参数更有用。

我建议像这样直接过滤“ posts_per_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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.