Статьи

Как добавить разбиение на страницы в тему WordPress

Если вы хотите добавить поддержку разбивки на страницы в свою тему WordPress с классными числами вместо следующих и предыдущих сообщений по умолчанию, вы можете сделать это с помощью знаменитого плагина PageNavi, однако я предпочитаю добавлять разбиение на страницы вручную в мои темы, чтобы люди этого не делали. нужно искать плагин. Это также помогает поддерживать сайт быстрее без использования всех внешних скриптов и CSS. К счастью, в WordPress есть отличная функция под названием «paginate_links », которая была добавлена ​​в WordPress 2.1 и позволит вам создавать навигацию в стиле разбивки на страницы для любого запроса на вашем сайте. Вот краткое руководство по добавлению простой навигации по страницам в вашу тему, которая выглядит так же, как разбивка на страницы в моей «Total WordPressTheme ».

Пагинация PHP

Просто добавьте следующий код в конец вашего файла functions.php (или любого другого файла в вашей теме, в котором вы хотите его сохранить). // Numbered Pagination
if (!function_exists( ‘wpex_pagination’) ) {
function wpex_pagination() {
$prev_arrow = is_rtl()? ‘→’: ‘←’;
$next_arrow = is_rtl()? ‘←’: ‘→’;
global $wp_query;
$total = $wp_query->max_num_pages;
$big = 999999999; // need an unlikely integer
if( $total > 1) {
if( !$current_page = get_query_var(‘paged’)) $current_page = 1;
if( get_option(‘permalink_structure’)) {
$format = ‘page/%#%/’;
} else {
$format = ‘&paged=%#%’;
}
echo paginate_links(array(
‘base’ => str_replace( $big, ‘%#%’, esc_url( get_pagenum_link( $big) ) ),
‘format’ => $format,
‘current’ => max( 1, get_query_var(‘paged’) ),
‘total’ => $total,
‘mid_size’ => 3,
‘type’ => ‘list’,
‘prev_text’ => $prev_arrow,
‘next_text’ => $next_arrow,) );
}
}
} Просмотреть все параметры

Пагинация CSS

Скопируйте следующий CSS и вставьте в свой файл style.css. ul.page-numbers {
list-style: none;
margin: 0;
}
.page-numbers:after {
content: «.»;
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
ul.page-numbers li {
display: block;
float: left;
margin: 0 4px 4px 0;
text-align: center;
}
.page-numbers a,
.page-numbers span {
line-height: 1.6em;
display: block;
padding: 0 6px;
height: 18px;
line-height: 18px;
font-size: 12px;
text-decoration: none;
font-weight: 400;
cursor: pointer;
border: 1px solid #ddd;
color: #888;
}
.page-numbers a span { padding: 0 }
.page-numbers a:hover,
.page-numbers.current,
.page-numbers.current:hover {
color: #000;
background: #f7f7f7;
text-decoration: none;
}
.page-numbers:hover { text-decoration: none }

Добавление функции разбивки на страницы в вашу тему

Вызвать функцию разбиения на страницы очень просто. Все, что вам нужно сделать, это добавить следующий код в файлы вашей темы, где вы хотите отображать любую разбивку на страницы. Наиболее распространены ваши index.php, home.php, category.php, tags.php, archive.php и search.php. Но если у вас есть какие-либо настраиваемые шаблоны страниц с поддержкой разбивки на страницы, вы захотите добавить их сюда. Замените нумерацию страниц по умолчанию следующим (обычно находится где-то после endif): <?php wpex_pagination(); ?>

Пользовательские запросы?

Если вы создаете собственный запрос с помощью WP_Query, эта функция не будет работать, если вы не определили свой запрос в переменной $ wp_query (что плохо, не делайте этого). Чтобы исправить это, я обычно создаю новые запросы вроде следующего: $wpex_query = new WP_Query( $args ); Таким образом, я могу изменить основную функцию разбиения на страницы, чтобы искать переменную при создании разбивки на страницы, например (редактирование первого фрагмента): global $wp_query, $wpex_query;
if ($wpex_query) {
$total = $wpex_query->max_num_pages;
} else {
$total = $wp_query->max_num_pages;
} Обновление: в этом примере я проверяю глобальную переменную … Однако вы можете просто передать переменную запроса непосредственно в функцию wpex_pagination, что, вероятно, будет лучшим выбором 😉

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Кнопка «Наверх»

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: