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 как отдельный плагин.