Как создать пользовательскую разбивку на страницы запросов в 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.