/ Сайтостроение / Wordpress / Пэйджинация

Пэйджинация

30.09.2015

619

Пэйджинация — это разбивка категорий (таксономий) на страницы, либо разбивка поста (страницы) на несколько страниц.

Из-за пэйджинации WP не корректно отрабатывает 404 ошибка. При уровне вложенности более 2-х, если добавить к url цифры, то ошибки 404 не будет, т.к. система будет считать что это пэйджинация.

Пэйджинация записей категории

Для вставки пэйджинации вида «Предыдущая следующая страница» вставить код

<div class="nav">
<div id="nav-left"><?php previous_posts_link('<&#160;&#160;&#160; Предыдущие записи'); ?></div>
<div id="nav-right"><?php next_posts_link('Следующие записи &#160;&#160;&#160;>','') ?></div>
</div>

Для вставки пэйджинации в виде номеров страниц

<div class="nav">
<?php $nav = get_the_posts_pagination( array(
'end_size' => 1, // количество страниц на концах
'mid_size' => 2, // количество страниц вокруг текущей
'prev_text' => __( '<&#160;Назад', 'textdomain' ),
'next_text' => __( 'Вперед&#160;>', 'textdomain' ),
));
$nav = preg_replace('~<h2.*?h2>~', '', $nav);
echo $nav; ?>
</div>

CSS

.nav-links {
width: 100%;
padding: 8px 0 12px 0;
}
.nav-links a, .page-numbers.current, .page-numbers.dots {
float: none !important;
padding: 8px 1% 12px 1%;
}

Пэйджинация страницы

Пэйджинация страницы — разбивка страницы на несколько подстраниц. Для того чтобы разделить слишком длинный текст (например: рассказ, или книга).

Выводить данную функцию надо в шаблоне записи и страницы, в цикле вывода while.

<?php wp_link_pages(); ?>

Для того чтобы в редакторе появилась кнопка разбивки на подстраницы надо добавить следующий код в functions.php

// Кнопка разбивки поста на несколько страниц

add_filter('mce_buttons', 'mce_page_break');
function mce_page_break( $mce_buttons ){
	$pos = array_search('wp_more', $mce_buttons, true);

	if( $pos !== false ) {
		$buttons = array_slice( $mce_buttons, 0, $pos );
		$buttons[] = 'wp_page';
		$mce_buttons = array_merge( $buttons, array_slice($mce_buttons, $pos) );
	}

	return $mce_buttons;
}

В режиме Текст кнопка не появляется. Разбивку можно делать вставкой команды
<!- -nextpage- -> (убрать пробел между дефисами)

Пэйджинация комментариев

<?php paginate_comments_links(); ?>

Пэйджинация в шаблоне автора (author.php)

Если использовать измененный вывод записей на странице автора, т.е. добавить вывод пользовательских типов записей, то происходит нарушение стандартной пэйджинации. Происходит это из-за того, что функция WP max_num_pages именно в шаблоне author.php считает только posts(блоговый движок). Надо расширить функцию max_num_pages для шаблона автора добавив следующий код в functions и указав название произвольного типа записей.

function custom_author_archive( &$query ) {
    if ($query->is_author)
        $query->set( 'post_type', array( 'post', 'articles' ) );
}
add_action( 'pre_get_posts', 'custom_author_archive' );

И в самом вызове цикла должна быть такой параметр пэйджинации

'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1),

Поделится информацией с друзьями

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

Пэйджинация
Хлебные крошки WC
Рекомендации для васХлебные крошки WCOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.