Вывод постраничной навигации на Custom Post Type ничем не отличается от вывода на обычной станице.
Практически всем блогерам известен плагин WP-PageNavi который выводит постраничную навигацию такого вида как на картинке.
Dimox поделился своим вариантом как сделать постраничную навигацию в WordPress без плагина и он прекрасно работает.
И этот метод мы будем использовать для отображения навигации в пользовательских типах сообщений.
[spoiler name=”ВидеоурокДля открытия – нажмите“]
[/spoiler][spoiler name=”Необходимые данныеДля открытия – нажмите“]
Для вывода на странице нужных нам типов пользовательских сообщений надо прописать данный код:
[crayon lang=”php”] ‘works’,’posts_per_page’ => 15,’paged’ => $paged));
while ($wp_query->have_posts()) : $wp_query->the_post();
?>[/crayon]
works – это пример пользовательского типа сообщений и в данном коде идет сразу разбивка на страницы.
Далее воспользуемся помощью Dimox.
Функция, которую он нам предлагает, совсем небольшая по размеру:
[crayon lang=”php”]function wp_corenavi() {
global $wp_query, $wp_rewrite;
$pages = ”;
$max = $wp_query->max_num_pages;
if (!$current = get_query_var(‘paged’)) $current = 1;
$a[‘base’] = str_replace(999999999, ‘%#%’, get_pagenum_link(999999999));
$a[‘total’] = $max;
$a[‘current’] = $current;
$total = 1; //1 – выводить текст “Страница N из N”, 0 – не выводить
$a[‘mid_size’] = 3; //сколько ссылок показывать слева и справа от текущей
$a[‘end_size’] = 1; //сколько ссылок показывать в начале и в конце
$a[‘prev_text’] = ‘«’; //текст ссылки “Предыдущая страница”
$a[‘next_text’] = ‘»’; //текст ссылки “Следующая страница”
if ($max > 1) echo ‘
‘;[/crayon]
Данный код необходимо поместить в файл functions.php вашего шаблона. В функции всего пять опций. Для понятности он написал комментарии в коде.Для того, чтобы вывести навигацию в нужном месте, вставляйте в шаблон следующий код:
[crayon lang=”php”][/crayon]
Проверяем навигация появилась, но =-O увы при переходе выдает ОШИБКУ…. но и на этот случай найдено решение
Открываем файл functions.php вашего шаблона и к пользовательскому типу сообщения дописываем строчку:
[crayon lang=”php”]add_rewrite_rule( ‘works/page/([0-9]+)/?$’, ‘index.php?pagename=works&paged=$matches[1]’, ‘top’ );[/crayon]
Теперь все должно работать 😉
[/spoiler]На этом все пользуйтесь, что не понятно пишите комментарии.
8 комментариев
А если необходимо вывести постраничную навигацию не на главной, а на отдельной странице, то выдает ошибку. Как можно это исправить?
@Ann: Надо больше конкретики. И в данном видеоуроке показано какраз как навигация выводиться на странице с пользовательскими постами.
Уже все впорядке. Было 2 ошибки. Во-первых не туда вставляла последнюю строчку. А во-вторых надо было обновить в админке количество отображаемых постов. После обновления всё заработало. Спасибо вам за статью.
Вопрос по навигации. Как поправить функцию, чтобы была кнопка вывести все записи.
Не совсем понял смысл этой доработки, а если этих записей будет например 1000 шт.
Скачала себе давно этот плагин, но он у меня почему-то не выводил номера страниц, все оставалось по старому. Недавно нашла его у себя, опять установила, активировала, и ничего…
Может и вправду попробовать самой коды прописать? 🙂
Попробуйте, лучше всяких плагинов.
Не понял что значит пользовательского типа посты? А какие еще бывают? Этот метод пойдет на обычном блоге?