Как использовать pre_get_posts для установки количества записей на странице?

2 апр. 2012 г., 18:12:28
Просмотры: 16.4K
Голосов: 5

Я пытаюсь использовать pre_get_posts для установки количества записей на странице для одного термина в таксономии. Меня смущает момент, как правильно указать термин, к которому нужно применить pre_get_posts.

Вот мой код:

function filter_press_tax( $query ){
if( $query->query_vars['tax_query']['taxonomy'] == 'press' && $query->query_vars['tax_query']['terms'][0] == 'press' ):
    $query->query_vars['posts_per_page'] = 5;
    return;
endif;
}//end filter_press_tax

Я не совсем понимаю, как получить доступ к таксономии и термину в $query. Да, у таксономии и термина одинаковые названия. Это плохая идея? У меня нет пользовательского запроса в шаблоне taxonomy-press-press.php для 'tax_query' - может быть, в этом проблема?

Буду благодарен за любую помощь! Спасибо

0
Все ответы на вопрос 1
4
16

Вы почти у цели, дружище. Попробуйте вот так:

<?php
    add_action('pre_get_posts', 'filter_press_tax');

    function filter_press_tax( $query ){
        if( $query->is_tax('press') && $query->has_term('press')):
            $query->set('posts_per_page', 5);
            return;
        endif;
    }
?>

Вы можете использовать любой условный тег или любой аргумент, который можно передать в WP_Query, чтобы проверить ваше условие или установить новое значение через pre_get_posts. Также попробуйте $query->get('taxonomy') / $query->get('term'). И ознакомьтесь с этим для методов set и get объекта $query.

2 апр. 2012 г. 18:30:10
Комментарии

Спасибо! is_tax работает отлично, но я всё ещё не могу установить термин. has_term выдает ошибку, а использование get('term') не применяет posts_per_page. Пробовал использовать get('term') == slug, id и name, но безрезультатно. Также пробовал $query->query_vars['term'], но тоже не сработало. Должно быть, я всё ещё что-то упускаю. Изучил $query stdClass Obj здесь: http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts и не увидел значений 'term' или has_term в списке. Всё работает, пока я не пытаюсь установить термин. Странно.

dkmojo dkmojo
3 апр. 2012 г. 01:15:43

Всегда пожалуйста! Ты хочешь установить термин? Давай я посмотрю и разберусь, как это можно сделать.

Rutwick Gangurde Rutwick Gangurde
3 апр. 2012 г. 06:53:39

Спасибо! Пока всё работает нормально, и мой другой термин в таксономии press, называющийся online reviews, тоже не слишком затронут. Буду ждать, если ты найдёшь что-то полезное. :)

dkmojo dkmojo
3 апр. 2012 г. 18:21:42

Снова приветствую! На самом деле у меня сейчас нет под рукой настройки CPT/таксономии, поэтому не смог протестировать. Но обязательно протестирую, как только все настрою, и обновлю здесь. :D

Rutwick Gangurde Rutwick Gangurde
3 апр. 2012 г. 19:32:56