Вопрос или проблема
Я хочу добавить нумерацию страниц в свой блог. Я попытался добавить код для пагинации, но он не появляется. Вот код, и я хочу добавить нумерацию страниц к нему. Это страница блога.
<?php
$args = array(
'post_type' => 'post'
);
$post_query = new WP_Query($args);
if($post_query->have_posts() ) {
while($post_query->have_posts() ) {
$post_query->the_post();
?>
<div class="cbp-item">
<div class="news_item shadow">
<a class="image" href="<?php the_permalink();?>">
<img src="<?php the_post_thumbnail_url(); ?>" alt="Последние новости" class="img-responsive">
</a>
<div class="news_desc">
<h3 class="text-capitalize font-light darkcolor"><a href="<?php the_permalink();?>"><?php the_title();?></a></h3>
<ul class="meta-tags top20 bottom20">
<li><a href="#."><i class="fa fa-calendar"></i><?php echo get_the_date( 'M d' ); ?></a></li>
<li><a href="#."> <i class="fa fa-user" aria-hidden="true"></i> <?php the_author_posts_link();?> </a></li>
<li><a href="#."><i class="fa fa-comment-o"></i><?php comments_number( 'нет откликов', 'один отклик', '% откликов' ); ?></a></li>
</ul>
<p class="bottom35"><?php the_excerpt(); ?></p>
<a href="<?php the_permalink();?>" class="button btnprimary btn-gradient-hvr">Читать далее</a>
</div>
</div>
</div>
<?php
}
}
?>
Прежде всего, вам необходимо получить переменную запроса для страниц и передать ее в основные параметры запроса:
//Защита от произвольных значений страниц
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
'post_type' => 'post'
'paged' => $paged,
);
Затем вам нужно добавить следующий код в то место, где вы хотите, чтобы пагинация появилась:
<?php
$big = 999999999; // нужно маловероятное целое число
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $post_query->max_num_pages
) );
?>
Ответ или решение
Как добавить постраничную навигацию с номерами на страницу блога WordPress
Вопрос, который вы задали, является важным для улучшения пользовательского опыта на сайте и обеспечения удобной навигации между записями блога. Для реализации номерной постраничной навигации в вашем блоге, необходимо внести изменения в код, что позволит пользователям легко перемещаться между страницами. Ниже представлены пошаговые инструкции для достижения этой цели.
Шаг 1: Получение переменной текущей страницы (paged)
Первым делом, вам нужно получить значение переменной paged
, которая отвечает за текущую страницу в запросе. Это можно сделать с помощью функции get_query_var()
. Обратите внимание, что мы также применяем функцию absint()
, чтобы защититься от произвольных значений.
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
Шаг 2: Уточнение аргументов запроса
Теперь, когда у нас есть переменная $paged
, мы можем использовать её в аргументах нашего основного запроса WP_Query
. Добавьте параметр 'paged' => $paged
в массив $args
, чтобы указать, на какой странице находится пользователь.
$args = array(
'post_type' => 'post',
'paged' => $paged,
);
Шаг 3: Добавление кода для постраничной навигации
В том месте, где вы хотите отобразить постраничную навигацию, вам нужно добавить следующий код. Этот код генерирует ссылки постраничной навигации с числами страниц.
$big = 999999999; // некий маловероятный целочисленный идентификатор
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $post_query->max_num_pages
) );
Шаг 4: Вставка кода в вашу структуру
Теперь интегрируйте все изменения в ваш исходный код:
<?php
$paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
$args = array(
'post_type' => 'post',
'paged' => $paged,
);
$post_query = new WP_Query($args);
if($post_query->have_posts()) {
while($post_query->have_posts()) {
$post_query->the_post();
?>
<div class="cbp-item">
<div class="news_item shadow">
<a class="image" href="<?php the_permalink(); ?>">
<img src="<?php the_post_thumbnail_url(); ?>" alt="Latest News" class="img-responsive">
</a>
<div class="news_desc">
<h3 class="text-capitalize font-light darkcolor"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<ul class="meta-tags top20 bottom20">
<li><a href="#."><i class="fa fa-calendar"></i><?php echo get_the_date( 'M d' ); ?></a></li>
<li><a href="#."><i class="fa fa-user" aria-hidden="true"></i><?php the_author_posts_link(); ?></a></li>
<li><a href="#."><i class="fa fa-comment-o"></i><?php comments_number( 'no responses', 'one response', '% responses' ); ?></a></li>
</ul>
<p class="bottom35"><?php the_excerpt(); ?></p>
<a href="<?php the_permalink(); ?>" class="button btnprimary btn-gradient-hvr">Read more</a>
</div>
</div>
</div>
<?php
}
// Код для постраничной навигации
$big = 999999999;
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $post_query->max_num_pages
) );
} else {
echo '<p>Записи не найдены.</p>';
}
?>
Заключение
С применением вышеперечисленных шагов на вашей странице блога будет реализована постраничная навигация с номерами страниц. Это не только улучшит пользовательский опыт на вашем сайте, но и может положительно сказаться на SEO, так как обеспечит более структурированный доступ к контенту.
Разработайте свою навигацию с умом, и ваш блог станет более удобным для посетителей.