5 фрагментов кода разбиения на страницы WordPress с примерами [от простого к сложному]
Опубликовано: 2020-02-03
Если вы ищете лучший код разбивки на страницы в WordPress с конкретными примерами, вы обнаружите, что примеры фрагментов кода разбивки на страницы, опубликованные в этом посте, будут очень полезными. Вы можете применить этот код разбиения на страницы в теме WordPress или в пользовательском плагине WordPress, который требует разбиения на страницы сообщений. Позвольте мне прервать преследование и поделиться моими любимыми фрагментами кода разбиения на страницы:
#1) Цикл WordPress с простым кодом разбиения на страницы
Если вы хотите добавить разбиение на страницы в цикле WordPress, вы можете использовать следующий и предыдущий код разбивки на страницы ниже:
<?php если ( have_posts() ) : ?>
<!-- Добавьте сюда функции пагинации. -->
<!-- Начало основного цикла. -->
<?php while ( have_posts() ): the_post(); ?>
<!-- остальная часть основного цикла вашей темы -->
<?php в конце; ?>
<!-- Конец основного цикла -->
<!-- Добавьте сюда функции пагинации. -->
<div class="nav-previous alignleft"><?php previous_posts_link('Старые сообщения'); ?></дел>
<div class="nav-next alignright"><?php next_posts_link('Новые сообщения'); ?></дел>
<?php еще : ?>
<p><?php _e('Извините, нет сообщений, соответствующих вашим критериям.'); ?></p>
<?php конец; ?>
# 2) Числовая пагинация WordPress
Еще один отличный вариант разбивки на страницы WordPress — использовать числовую разбивку на страницы, которая добавляет номера к сообщениям и группирует сообщения на основе числа. Например, вы можете отображать 5 сообщений на странице. Это код разбивки на страницы в WordPress для числовой разбивки на страницы :
<?php
#ШАГ 1: Создайте числовую функцию разбивки на страницы WordPress
функция njengah_numeric_pagination() {
если(является_единственным())
возвращение;
глобальный $wp_query;
/** Остановить выполнение, если имеется только 1 страница */
если($wp_query->max_num_pages <= 1)
возвращение;
$paged = get_query_var('выгружается')? absint(get_query_var('выгружаемый')): 1;
$max = intval($wp_query->max_num_pages);
/** Добавляем текущую страницу в массив */
если ($paged >= 1)
$ссылки[] = $страницы;
/** Добавляем в массив страницы вокруг текущей */
если ($paged >= 3) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
если ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
эхо '<div class="navigation"><ul>' . "\п";
/** Ссылка на предыдущий пост */
если (get_previous_posts_link())
printf('<li>%s</li>'. "\n", get_previous_posts_link());
/** Ссылка на первую страницу, плюс многоточие, если необходимо */
если ( ! in_array( 1, $ссылки )) {
$class = 1 == $paged ? ' класс = "активный"' : '';
printf('<li%s><a href="%s">%s</a></li>'. "\n", $class, esc_url(get_pagenum_link(1)), '1');
если ( ! in_array( 2, $ссылки ))
эхо '<li>…</li>';
}
/** Ссылка на текущую страницу, плюс 2 страницы в любом направлении, если необходимо */
сортировать($ссылки);
foreach ( (массив) $links как $link ) {
$class = $paged == $ссылка? ' класс = "активный"' : '';
printf('<li%s><a href="%s">%s</a></li>'. "\n", $class, esc_url(get_pagenum_link($link)), $link);
}
/** Ссылка на последнюю страницу, плюс многоточие, если необходимо */
если (! in_array($max, $links)) {
если (! in_array($max - 1, $links))
эхо '<li>…</li>' . "\п";
$class = $paged == $max ? ' класс = "активный"' : '';
printf('<li%s><a href="%s">%s</a></li>'. "\n", $class, esc_url(get_pagenum_link($max)), $max);
}
/** Ссылка на следующий пост */
если (get_next_posts_link())
printf('<li>%s</li>'. "\n", get_next_posts_link());
эхо '</ul></div>' . "\п";
}
#ШАГ 2: Добавьте в шаблоны, используя этот вызов функции выше
njengah_numeric_pagination();
# ШАГ 3: Настройте нумерацию страниц в соответствии со стилями вашей темы.
/** Классы CSS для оформления нумерации страниц*/
.навигация ли {
}
.navigation li a{
}
# 3) Пример пагинации WordPress Ajax
Если вы ищете код разбивки на страницы Ajax в WordPress, я нашел пример на GitHub, который работает очень хорошо, и код представлен в виде плагина. Я настроил его, чтобы сделать его плагином для нашего руководства, и код можно скопировать в файл, сохранить в формате zip и установить как плагин. Ниже приведен пример кода разбивки на страницы WordPress Ajax:

<?php
/**
* Название плагина: Njengah Ajax Pagination
* URI плагина: https://njengah.com
* Описание: Пример разбиения на страницы WordPress Ajax.
* Версия: 1.0.0
* Автор: Джо Нженга
* URI автора: https://njengah.com
* Лицензия: GPL-2.0+
* URI лицензии: http://www.gnu.org/licenses/gpl-2.0.txt
* Текстовый домен: cs-pagination
* Путь к домену: /languages
*/
// Кредит - Каспер Шульц
класс Njengah_Ajax_Pagination {
защищено $num_per_page;
публичная функция __construct() {
$this->num_per_page = 5;
$это->инициализировать();
}
инициализация защищенной функции () {
add_action('init', array($this, 'add_rewrite_rule'));
add_filter('query_vars', массив($this, 'add_query_vars'));
add_action('parse_request', массив($this, 'parse_request'));
}
/**
* Разобрать входящий запрос и сгенерировать результат.
*/
функция parse_request($wp) {
если (array_key_exists('cs-page', $wp->query_vars)) {
$page = isset ( $wp->query_vars['cs-page'] )? $wp->query_vars['CS-страница'] : 1;
$аргументы = массив(
'post_type' => 'сообщение',
'post_per_page' => $this->num_per_page,
'страница' => $страница,
);
$query = новый WP_Query($args);
// Нам нужно знать общее количество найденных постов.
$values['total'] = $query->found_posts;
// И на страницу.
$values['per_page'] = $this->num_per_page;
$values['сообщения'] = массив();
// Позволяет отправлять только те данные, которые нам нужны.
в то время как ($query->have_posts()) {
$запрос->the_post();
$values['сообщения'][] = массив(
'ID' => получить_the_ID(),
'название' => get_the_title(),
);
}
wp_reset_postdata();
wp_send_json ($ значения);
}
}
/**
* Добавьте необходимые аргументы запроса.
*/
функция add_query_vars($query_vars) {
$query_vars[] = 'CS-страница';
вернуть $query_vars;
}
/**
* Добавляет правило перезаписи для нашей пользовательской нумерации страниц, чтобы мы могли избежать использования admin-ajax.
*/
функция add_rewrite_rule() {
add_rewrite_rule('^cs-paginate/([0-9]+)/?', 'index.php?cs-page=$matches[1]', 'top' );
}
/**
* Сброс правил перезаписи.
*/
статическая функция установить () {
flush_rewrite_rules();
}
}
функция njengah_ajax_pagination_init() {
новый Njengah_Ajax_Pagination();
}
njengah_ajax_pagination_init();
// Необходимо сбросить правила перезаписи при активации.
register_activation_hook(__FILE__, array('Njengah_Ajax_Pagination', 'install'));
# 4) Разбиение на страницы WordPress для пользовательского типа записи
Для разбивки на страницы пользовательского типа записи вам нужно использовать WP_query для проверки пользовательского типа записи, а в аргументах вы передаете настраиваемый тип записи в post_type, а затем используете код разбивки на страницы для создания разбивки на страницы WordPress для пользовательского типа записи.
Ниже приведен код, который вы должны добавить в functions.php и заменить post_type на соответствующий слаг пользовательского типа записи:
<?php
/**
* Разбиение на страницы WordPress для пользовательских типов сообщений
*/
<?php
$paged = (get_query_var('paged'))? get_query_var('выгружается'): 1;
$аргументы = массив(
'post_type' => 'custom_post_type_name',
'сообщений_на_странице' => 10,
'выгружается' => $выгружается
);
$цикл = новый WP_Query($args);
в то время как ($loop->have_posts()): $loop->the_post();
// Содержимое пользовательского типа записи
конец;
?>
<nav class="разбиение на страницы">
<?php
$большой = 999999999;
echo paginate_links(массив(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'формат' => '?paged=%#%',
'текущий' => макс( 1, get_query_var('выгружаемый') ),
'всего' => $loop->max_num_pages,
'пред_текст' => '«',
'след_текст' => '»'
));
?>
</nav>
<?php wp_reset_postdata(); ?># 5 Пользовательская пагинация запросов WordPress
Пользовательский код разбивки на страницы запроса в WordPress использует WP_query для получения определенного сообщения, которое мы хотим разбить на страницы, а затем объединяет результаты запроса с кодом разбиения на страницы, чтобы применить разбиение на страницы к конкретным выбранным нами сообщениям. Ниже приведен пример разбиения на страницы пользовательского запроса в WordPress.
<?php
//Пользовательский запрос
$paged = (get_query_var('paged'))? absint(get_query_var('выгружаемый')): 1;
$аргументы = массив(
'сообщений_на_странице' => 5,
'category_name' => 'галерея',
'выгружается' => $выгружается,
);
$the_query = новый WP_Query($args);
?>
<!-- цикл и т.д.. -->
<?php
// Пагинация
$большой = 999999999; // нужно маловероятное целое
echo paginate_links(массив(
'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
'формат' => '?paged=%#%',
'текущий' => макс( 1, get_query_var('выгружаемый') ),
'всего' => $the_query->max_num_pages
));Вывод
В этом посте мы выделили различные типы разбиения на страницы WordPress и поделились специальным кодом разбиения на страницы для использования в каждом случае. Этот код разбивки на страницы в WordPress можно добавить к существующим темам или плагинам, а также можно добавить в WordPress как отдельный плагин.
