Wordpress:使用分页搜索转到 page/2/ 时出现问题
Wordpress: Issue when going to page/2/ of the Search with Pagination
尝试为我的 Wordpress 应用更好的分页,我发现这段代码在 Whosebug 的某个地方为 WP_Query 添加了分页。所以我从 have_posts() 开始编辑我的代码,然后包含 WP_Query 以添加过滤器和分页*。下面的代码在自定义模板上工作正常,其中类别 = 音乐和分页也工作正常。
<?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();?>
感谢有关此问题的任何帮助,谢谢。
试试这个search.php:
<?php
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
$s = get_search_query();
$args = array(
'posts_per_page' => 5,
'paged' => $paged,
's' => $s
);
$data = new WP_Query($args);
//print_r($data);
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('page'));
echo paginate_links(array(
'base' => @add_query_arg('page','%#%'),
'format' => '?page=%#%',
'current' => $current_page,
'total' => $total_pages,
'prev_text' => __('« prev'),
'next_text' => __('next »'),
));
}
?>
</div>
<?php
else :
echo '<p>No content found</p>';
endif;
?>
尝试为我的 Wordpress 应用更好的分页,我发现这段代码在 Whosebug 的某个地方为 WP_Query 添加了分页。所以我从 have_posts() 开始编辑我的代码,然后包含 WP_Query 以添加过滤器和分页*。下面的代码在自定义模板上工作正常,其中类别 = 音乐和分页也工作正常。
<?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();?>
感谢有关此问题的任何帮助,谢谢。
试试这个search.php:
<?php
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
$s = get_search_query();
$args = array(
'posts_per_page' => 5,
'paged' => $paged,
's' => $s
);
$data = new WP_Query($args);
//print_r($data);
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('page'));
echo paginate_links(array(
'base' => @add_query_arg('page','%#%'),
'format' => '?page=%#%',
'current' => $current_page,
'total' => $total_pages,
'prev_text' => __('« prev'),
'next_text' => __('next »'),
));
}
?>
</div>
<?php
else :
echo '<p>No content found</p>';
endif;
?>