各个类别的单个RSS供稿输入长度?


9

我知道如何从wp中的类别检索rss2 feed,即/feed在类别名称后面添加。但是,当我这样做时,并非该提要中的所有条目都包含在rss中,这是因为我在管理后端将提要限制设置为50。

我想知道是否可以以编程方式为每个类别/提要单独设置提要长度。

我找不到供稿大小的任何api设置...欢迎任何帮助。

谢谢你的帮助。


Stephen Harris和CodeMonkey的答案都不适用于一个特定类别?否则,两个答案都对我有用!为什么会只对一种类别无效?
mahatmanich 2012年

Answers:


8

应该可以有条件地使用pre_get_posts并将其设置posts_per_page为50(关于类别的提要)。不幸的是,有这张悬而未决的火车票

唯一的解决方法是直接挂钩post_limits并替换LIMITSQL查询的一部分。

add_action('post_limits','wpse71759_category_rss_limit',10,2);
function wpse71759_category_rss_limit($limit, $query){

     if( $query->is_feed() && $query->is_category() ){
          $paged =  $query->get('paged') ? (int) $query->get('paged') : 1;
          $per_page = 50;
          $page_start = ($paged-1)*$per_page;

          return "LIMIT $page_start, $per_page";
     }
     return $limit;
}

嗨,斯蒂芬,我将对此进行研究,实际上我总是想要Feed中某个类别中的所有条目,并且仅在我的博客页面上,我想要限制在后端中设置的限制,我该怎么做?
mahatmanich 2012年

在这种情况下,return "";而不是"LIMIT $page_start, $per_page"应该这样做。
史蒂芬·哈里斯

嘿,您可以解释一下您的代码吗?我不太确定那是否是我想要的。
mahatmanich

因此,对于类别供稿,您希望返回所有帖子-因此,您不需要LIMIT查询的一部分。上面的过滤器允许您LIMIT用空白字符串替换该部分,以便生成的sql将提取所有帖子。
史蒂芬·哈里斯

1
是的,但我建议你做一个插件出来的(wpcandy.com/teaches/how-to-create-a-functionality-plugin
斯蒂芬·哈里斯

2
add_filter('query', 'sql_query_feed_filter');
function sql_query_feed_filter($sql){
    global $wp_query;

    if ($wp_query->is_feed == true &&  isset($wp_query->query_vars['custom_taxonomy']) &&  in_array($wp_query->query_vars['custom_taxonomy'], array('slug1','slug2')) ){
        if (strpos($sql, 'SELECT SQL_CALC_FOUND_ROWS') !== false){
            list($sql,) = explode('LIMIT', $sql);
        }
    }
    return $sql;
}

您需要做的就是编辑此功能,然后按类别分类替换分类,然后将子词编辑到您的大部分类别...


您是否愿意解释您的代码?
mahatmanich

如果找到特定分类法(例如,$ wp_query-> query_vars ['custom_taxonomy'] custom_taxonomy)并且是否满足某些条件($ wp_query-> query_vars ['custom_taxonomy'] =='slug')。如果所有这些都发生并且是正确的(在site.com/your-custom-feed-for-category.xml上),则您的Feed中将没有任何限制结果($ SQL语句除以LIMIT值,这意味着它返回时没有最后一个LIMIT)运算符...无限制。每个rss中的所有条目。)
Oleg Butuzov 2012年

我在哪里放那个代码?我主题的functions.php?
mahatmanich

functions.php完全适合。但请在之前更改标签和自定义分类的名称。并在测试之前清除浏览器缓存(RSS馈送浏览器缓存的缓存)。
奥列格·布图佐夫

嘿,感谢您对缓存的注意!这是
可行的
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.