Пользовательский шаблон Wordpress для подачи в определенных категориях - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь использовать пользовательский шаблон для подкаста.Мой подкаст - это стандартное сообщение, определяемое его категорией.Я хотел бы получить к нему доступ через стандартный URL-адрес: mysite.com/category/podcast1/feed

Я могу заставить работать новый шаблон, но код ниже удаляет стандартную фильтрацию категорий, поэтому я получаю сообщения из всех категорий с новым шаблоном.Когда я пытаюсь добавить новый запрос и ограничить количество публикаций, он отменяет все запросы.Когда я пытаюсь ограничить запрос $query->is_feed, он тоже не работает.Когда я var_dump $ query, хук 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');

Как я могу ограничить запрос только фидом или восстановить стандартный запрос, который, я полагаю, был удален с помощью remove_all_acions('do_feed_rss2')?

Я бы предпочелсделайте все это с помощью пользовательского плагина, но сейчас все работает.Спасибо за помощь.

1 Ответ

0 голосов
/ 27 ноября 2018

Я нашел проблему в моем новом шаблоне канала.Вверху у меня было:

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

это создавало второй запрос, который переопределял мой запрос pre_get_posts.

...