Как создать пользовательскую разбивку на страницы запросов в WordPress на примере
Опубликовано: 2020-02-24
Создание пользовательской разбивки на страницы запросов в WordPress — одно из самых популярных решений для разбивки на страницы для сообщений в блогах и пользовательских типов сообщений. Если вы хотите создать собственную разбивку на страницы запросов в своем блоге WordPress, этот пост поможет вам. В идеале, пользовательское разбиение на страницы запроса предполагает использование различных параметров запроса для создания разбивки на страницы записи WordPress, основанной на этом запросе.
В предыдущем уроке я подробно объяснил, как вы можете добавить числовую нумерацию страниц в WordPress, а также как создать миниатюру предыдущей и следующей страницы публикации и как разделить публикацию на несколько страниц с помощью нумерации страниц. Я также поделился кодом разбивки на страницы WordPress, который вы можете использовать в своем блоге, чтобы добавить предпочтительный вариант разбиения на страницы. В этом посте я расскажу, как создать и внедрить пользовательскую разбивку на страницы запросов на вашем сайте WordPress.
Разбивка на страницы пользовательского запроса
Как я упоминал во введении, пользовательское разбиение на страницы запроса состоит из трех частей, которые включают в себя: пользовательский запрос, код для отображения разбиения на страницы и некоторые стили, чтобы разбивка на страницы выглядела хорошо. Мы разобьем этот пользовательский код разбивки на страницы запроса на эти три шага:
Создайте пользовательский запрос сообщения или пользовательских сообщений
Первый шаг — создать запрос, который представляет собой массив аргументов, которые мы намерены использовать в пользовательском запросе.
Чтобы отобразить эту пользовательскую разбивку на страницы запроса, давайте начнем с создания пользовательского шаблона страницы, куда мы добавим код для пользовательской разбивки на страницы запроса.
Ниже приведен пример пользовательского шаблона страницы с пользовательским кодом запроса:
<?php
/**
* Название шаблона: CQ Pagination
*
*/
получить_заголовок();
// Шаг 1: Создание пользовательского запроса
$paged = (get_query_var('paged'))? get_query_var('выгружается'): 1;
$аргументы = массив(
'posts_per_page' => 2, // запрашиваем последние 5 сообщений
'выгружается' => $выгружается
);
$customQuery = новый WP_Query($args);Этот код просто создает настраиваемый шаблон страницы, который вы можете увидеть под атрибутами страницы, как показано на изображении ниже:

Запрос может иметь несколько аргументов, но в этом случае мы ограничились только «posts_per_page», то есть количеством сообщений, которые мы хотим отобразить на странице.
Мы также можем указать тип сообщения, используя «post_type», «orderby», «author» и многое другое. Ниже приведен пример другого запроса для пользовательского типа записи с именем «книга»:
//Получить текущего автора для использования в запросе
$current_author = (isset($_GET))? get_user_by('slug', $author_name): get_userdata(intval($author));
/* устанавливаем аргументы для запроса
$аргументы = массив(
'post_type' => массив('цель'),
'заказ' => 'дата',
'заказ' => 'описание',
'сообщений_на_странице' => 10,
'paged' => get_query_var('страница')? get_query_var('страница'): 1,
'автор' => $current_author->ID
);
// Создаем запрос
$query = новый WP_Query($args);После того, как мы создадим $args и создадим экземпляр запроса, мы теперь готовы отобразить сообщения в цикле и добавить пользовательский запрос на следующем шаге.
Отображение запрошенных сообщений в пользовательском шаблоне страницы
Для отображения запрошенных сообщений код был добавлен к исходному коду пользовательского шаблона, и полный код выглядит следующим образом:
<?php
/**
* Название шаблона: CQ Pagination
*
*/
получить_заголовок();
// Шаг 1: Создание пользовательского запроса
$paged = (get_query_var('paged'))? get_query_var('выгружается'): 1;
$аргументы = массив(
'posts_per_page' => 2, // запрашиваем последние 5 сообщений
'выгружается' => $выгружается
);
$customQuery = новый WP_Query($args);
?>
<!-- Шаг 2: Отображение сообщений, которые мы запросили на шаге 1 -->
<div класс="обертка">
<div id="основной" класс="контент-область">
<main id="main" class="site-main" role="main">
<?php
если($customQuery->have_posts() ):
в то время как ($ customQuery-> have_posts ()) :
$customQuery->the_post();
глобальный $пост;
?>
<div class="inner-content-wrap">
<ul class="cq-posts-list">
<li>
<h3 class ="cq-h3"><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></а></h3>
<дел>
<ул>
<дел>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('миниатюра'); ?></а>
</div>
</ul>
<ул>
<p><?php echo the_content(); ?></p>
</ul>
</div>
</li>
</ul>
</div> <!-- конец сообщения в блоге -->
<?php в конце;
конец;
wp_reset_query();Создайте функцию пагинации
На этом последнем шаге нам нужно создать функцию разбиения на страницы, которую мы будем использовать в пользовательском шаблоне страницы выше для отображения разбиения на страницы пользовательского запроса. Чтобы создать функцию разбиения на страницы, нам нужно добавить следующий код в файл functions.php:

// Пользовательская функция пагинации
функция cq_pagination($pages = '', $range = 4)
{
$showitems = ($range * 2)+1;
глобальный $paged;
если (пусто ($ paged)) $ paged = 1;
если($страницы == '')
{
глобальный $wp_query;
$pages = $wp_query->max_num_pages;
если(!$страниц)
{
$страниц = 1;
}
}
если(1 != $страниц)
{
echo "<nav aria-label='Пример навигации по странице'> <ul class='pagination'> <span>Страница ".$paged." из ".$pages."</span>";
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>« First</a>";
if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Предыдущий</a>";
для ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems ))
{
эхо ($paged == $i)? "<li class=\"элемент страницы активен\"><a class='page-link'>".$i."</a></li>":"<li class='page-item' > <a href='".get_pagenum_link($i)."' class=\"page-link\">".$i."</a></li>";
}
}
if ($paged < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=\"".get_pagenum_link($paged + 1)." \">i class='flaticon flaticon-back'></i></a></li>";
if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=' ".get_pagenum_link($pages)."'><i class='flaticon flaticon-arrow'></i></a></li>";
эхо "</ul></nav>\n";
}
}
Вызов функции разбивки на страницы в пользовательском шаблоне
Последний шаг — вызвать функцию, которую мы добавили выше в шаблон, чтобы отображалась нумерация страниц. Для вызова этой функции мы должны использовать следующий код:
// Шаг 3: здесь вызовите функцию разбивки на страницы
если (function_exists("cq_pagination")) {
cq_pagination($customQuery->max_num_pages);
}Окончательный код, который создает пользовательский шаблон страницы с этой функцией разбиения на страницы, должен быть следующим:
<?php
/**
* Название шаблона: CQ Pagination
*
*/
получить_заголовок();
// Шаг 1: Создание пользовательского запроса
$paged = (get_query_var('paged'))? get_query_var('выгружается'): 1;
$аргументы = массив(
'posts_per_page' => 2, // запрашиваем последние 5 сообщений
'выгружается' => $выгружается
);
$customQuery = новый WP_Query($args);
?>
<!-- Шаг 2: Отображение сообщений, которые мы запросили на шаге 1 -->
<div класс="обертка">
<div id="основной" класс="контент-область">
<main id="main" class="site-main" role="main">
<?php
если($customQuery->have_posts() ):
в то время как ($ customQuery-> have_posts ()) :
$customQuery->the_post();
глобальный $пост;
?>
<div class="inner-content-wrap">
<ul class="cq-posts-list">
<li>
<h3 class ="cq-h3"><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></а></h3>
<дел>
<ул>
<дел>
<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('миниатюра'); ?></а>
</div>
</ul>
<ул>
<p><?php echo the_content(); ?></p>
</ul>
</div>
</li>
</ul>
</div> <!-- конец сообщения в блоге -->
<?php в конце;
конец;
wp_reset_query();
// Шаг 3: здесь вызовите функцию разбиения на страницы
если (function_exists("cq_pagination")) {
cq_pagination($customQuery->max_num_pages);
}
?>
</main><!-- #main -->
</div><!-- #primary -->
</div><!-- .wrap -->
<!----конец страницы-------->
<?php get_footer(); ?>Если вы правильно выполнили каждый шаг, у вас должна быть нумерация страниц, как показано на изображении ниже:

Стиль пагинации пользовательского запроса
Последний шаг — добавить стили к пользовательской нумерации страниц, чтобы они соответствовали стилям и дизайну темы. Ниже приведены стили CSS, которые вы должны добавить в таблицу стилей, чтобы оформить эту пользовательскую разбивку на страницы:
/**
* Стили пагинации CQ
* @author Джо Нженга
*/
.pagination {
ясно: оба;
должность: родственница;
размер шрифта: 16 пикселей;
высота строки: 13 пикселей;
поплавок: справа;
тип стиля списка: нет;
ширина:100%;
}
.pagination span, .pagination a {
дисплей:блок;
плыть налево;
поле: 2px 2px 2px 0;
отступы: 6px 9px 5px 9px;
текстовое оформление: нет;
ширина:авто;
цвет:#fff;
фон: #237697;
}
.pagination a: hover {
цвет:#fff;
фон: #000;
}
.pagination .current{
отступы: 6px 9px 5px 9px;
фон: #999;
цвет:#fff;
}После того, как вы добавите эти стили разбивки на страницы, окончательный вид пользовательской разбивки на страницы должен выглядеть так, как показано на изображении ниже:

Последние мысли
В этом посте мы описали пошаговый способ добавления пользовательской разбивки на страницы запросов в ваш блог WordPress. Эти шаги включают в себя; создание запроса, создание пользовательского шаблона страницы для отображения пользовательских запрошенных сообщений с разбиением на страницы и добавление функции разбиения на страницы в файл functions.php. Наконец, не забудьте вызвать функцию разбивки на страницы и добавить соответствующие стили, соответствующие дизайну вашей темы WordPress.
