#php #wordpress
#php #wordpress
Вопрос:
Недавно я создал пользовательскую страницу, используя PHP в WordPress. Я попытался отфильтровать все сообщения по определенному тегу. Вот мой PHP-код для получения post и вставки его в div:
<div class="container">
<div class="row box">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'tag' => 'artikelseriesomb2020',
'posts_per_page' => 10,
'paged' => $paged,
);
$arr_posts = new WP_Query($args);
if ($arr_posts->have_posts()) :
while ($arr_posts->have_posts()) :
$arr_posts->the_post();
$url = wp_get_attachment_url(get_post_thumbnail_id($arr_post->ID), 'large');
?>
<div class="col-mt-4" style="padding:10px;">
<div class="card" style="width: 18rem;">
<img class="card-img-top" data-no-lazy="1" src="<?php echo $url; ?>" alt="Card image cap">
<div class="card-body">
<h5 class="card-title"><?php the_title(); ?></h5>
<p class="card-text"><?php the_excerpt(); ?></p>
<a href="<?php the_permalink(); ?>" class="btn btn-primary">BACA SELENGKAPNYA</a>
</div>
</div>
</div>
<?php
endwhile;
endif;
?>
</div>
</div>
Я хочу отображать 10 сообщений на странице и отображать навигационную ссылку в нижней части шаблона, чтобы пользователь мог перейти на другую страницу, чтобы увидеть другие / остальные сообщения. Я попробовал этот единственный код:
<?php posts_nav_link(); ?>
Но он не отображает никакой навигационной ссылки. Что-то не так с моим кодом? Пожалуйста, помогите мне.
Ответ №1:
Пожалуйста, попробуйте этот код, он может вам помочь! поместите ее внутрь IF и после endwhile.
echo '<div class="post_pagination">';
$total_pages = $arr_posts->max_num_pages;
if ($total_pages > 1){
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%',
'current' => $current_page,
'total' => $total_pages,
'prev_text' => __('« prev'),
'next_text' => __('next »'),
));
}
echo '</div>';
wp_reset_postdata()
Комментарии:
1. Добро пожаловать в Stack Overflow. Спасибо за вклад, но, пожалуйста, обратите внимание, что ответы только с кодом не приветствуются, потому что они не объясняют, как это решает проблему. Если вы отредактируете свой ответ, чтобы объяснить, что делает этот код и как он отвечает на вопрос, это было бы более полезно для OP, а также для других пользователей с подобными проблемами в будущем.
Ответ №2:
Я нашел решение.
Это довольно просто!
Сначала я использую эту функцию для генерации разбивки на страницы:
<?php
function pagination_bar()
{
global $my_query;
$total_pages = $my_query->max_num_pages;
if ($total_pages > 1) {
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%',
'current' => $current_page,
'total' => $total_pages,
));
}
}
?>
Затем я вызываю функцию:
<?php
if (have_posts()) :
pagination_bar();
endif;
?>
Вот и все.