Плагин wp pagenavi создает лишние страници

Плагин для постраничной навигации. Раньше проблем не было. Все работало. Сейчас обнаружил, что ссылка на последнюю страницу выдает 404. Посмотрел — ее и не должно быть там. Т.е. это лишняя ссылка. Похоже плагин считает что постов больше чем есть. Почему?

Подозрение пока падает на совместимость плагина с WordPress 3.4.1… Ибо глюков с плагинами и темой уже выловлено много…

Так бывает, когда в шаблоне есть вызов query_posts(), в котором значение параметра posts_per_page не совпадает с тем, что задано в настройках.

Можно либо изменить значение, либо переделать вызов query_posts() в функцию, привязанную к действию pre_get_posts:
http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts

Спасибо! Сейчас гляну 🙂

Хм….

А как сделать что бы дробление на страници было разным на главной и в категориях…
Например на главной 5-ть постов, а в категориях 10-ть?

У меня было в теме такая конструкция:

<?php if (is_home()) {query_posts($query_string.'&cat=-66,-67,-231&showposts=5');} ?>

В настройках было 10-ть

Сейчас я убрал эту конструкцию и добавил в function.php:

<?php
function removeFromHome($query) {
if ($query->is_home) 
    {$query->set('cat','-66,-67,-231');}
return $query; }
add_filter('pre_get_posts','removeFromHome');
?>

Теперь работает правильно, но везде выводит по 10ть постов

При таком подходе параметр posts_per_page уже можно менять 🙂

Попробуйте так:

function removeFromHome( $query ) {
    if ( $query->is_home ) {
        $query->set( 'cat', '-66,-67,-231' );
        $query->set( 'posts_per_page', 5 );
    }
}
add_action( 'pre_get_posts', 'removeFromHome' );

(pre_get_posts — это действие, а не фильтр, объект $query передаётся по ссылке, поэтому можно обойтись без return).

Спасибо! Помогло 🙂

Anonymous
Отправить
Ответ на: