【发布时间】:2021-09-12 14:42:35
【问题描述】:
尝试为我的 Wordpress 应用更好的分页,我发现这段代码在 stackoverflow 的某处向 WP_Query 添加了分页。所以我编辑了我的代码,只有 have_posts(),然后包含 WP_Query 以添加过滤器和分页*。下面的代码在 category = music 的自定义模板上运行良好,并且分页也运行良好。
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$data= new WP_Query(array(
'post_type'=>'post',
'posts_per_page' => 5,
'paged' => $paged,
'category_name' => 'music',
));
if($data->have_posts()) :
while($data->have_posts()) : $data->the_post(); ?>
<?php get_template_part('content', get_post_format()); ?>
<?php endwhile; ?>
<div>
<?php
$total_pages = $data->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 »'),
));
}
?>
</div>
<?php
else :
echo '<p>No content found</p>';
endif;
?> <?php wp_reset_postdata();?>
现在我的 search.php 中的代码: 唯一的区别是上面使用了 category_name,搜索使用 $s 参数。它适用于第一页,但是当我单击第 2 页时,它不会搜索任何内容,而是再次显示第一页并在 URL 中添加一些文本。我觉得不应该是这种情况,因为我已经有了查询结果但是Idk。
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$s = get_search_query();
$args = array(
'posts_per_page' => 5,
'paged' => $paged,
's' => $s
);
$data = new WP_Query($args);
if($data->have_posts()) :
while($data->have_posts()) : $data->the_post(); ?>
<?php get_template_part('content', get_post_format()); ?>
<?php endwhile; ?>
<div>
<?php
$total_pages = $data->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 »'),
));
}
?>
</div>
<?php
else :
echo '<p>No content found</p>';
endif;
?> <?php wp_reset_postdata();?>
感谢您对此问题的任何帮助,谢谢。
【问题讨论】:
标签: php wordpress search pagination