Wordpress自定义模板,用于特定类别的Feed

问题描述 投票:0回答:1

我正在尝试将自定义模板用于播客Feed。我的播客是由其类别定义的标准帖子。我想通过标准网址访问它:mysite.com/category/podcast1/feed

我可以使用新模板,但下面的代码会删除标准类别过滤,因此我会使用新模板从所有类别中获取帖子。当我尝试添加新查询并限制帖子时,它会覆盖所有查询。当我尝试使用$query->is_feed限制查询时,它也不起作用。当我var_dump $查询时,pre_get_posts挂钩运行查询两次,第一次使用is_feed为true,第二次使用false。它运行的最后一个查询是“showposts”。这是我的代码:

function my_custom_rss($query) {
    if ( 'podcast1' === get_query_var( 'category_name' ) ) {
        get_template_part( 'feed', 'podcast' );
    } 
    else {
        get_template_part( 'feed', 'rss2' );
    }
}
remove_all_actions( 'do_feed_rss2' );
add_action( 'do_feed_rss2', 'my_custom_rss', 10, 1 );

function feed_category_query($query)
{
    if ($query->is_feed && $query->is_category() ) {
        $tax_query = array(
            'relation' => 'OR',
                array(
                    'taxonomy' => 'category',
                    'field' => 'id',
                    'terms' => get_cat_ID('podcast1')
                ),
                array(
                    'taxonomy' => 'category',
                    'field' => 'id',
                    'terms' => get_cat_ID('podcast2')
                ),
            );

            $query->set('post_type','post');
            $query->set('orderby','post_date');
            $query->set('order','DESC');
            $query->set('tax_query', $tax_query);
            return $query;
    } 
}
add_filter('pre_get_posts','feed_category_query');

如何将查询限制为仅限Feed,或者恢复我认为已使用remove_all_acions('do_feed_rss2')删除的标准查询?

我宁愿用自定义插件来做所有这些,但是现在,无论做什么都可以。谢谢您的帮助。

wordpress rss feed
1个回答
0
投票

我在新的Feed模板中发现了这个问题。在顶部我有:

$posts = query_posts('showposts=' . $postCount);

这是创建第二个覆盖我的pre_get_posts查询的查询。

© www.soinside.com 2019 - 2024. All rights reserved.