我的搜索页面URL:
https://www.example.com/search/keyword/page/2/
这里是我的自定义搜索页面:<?php
if($_GET[\'search_text\'] && !empty($_GET[\'search_text\']))
{
$text = $_GET[\'search_text\'];
}
else
{
$text = urldecode( get_query_var(\'search_text\') ) ;
}
?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<div class="searchpage-container">
<div class="searchpage-filter-container">
<span>Arama Sonuçları:</span>
</div>
<div class="product-container">
<?php
$my_products = array( 2085, 4094, 2900, 4072, 131 );
global $paged;
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$args = array(
\'post_type\' => \'product\',
\'posts_per_page\' => 2,
\'paged\' => $paged,
\'post__in\' => $my_products
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( \'content\', \'product\' );
endwhile;
$total_pages = $loop->max_num_pages;
if ($total_pages > 1){
/* $current_page = max(1, get_query_var(\'paged\')); */
$wp_query->query_vars[\'paged\'] > 1 ? $current_page = $wp_query->query_vars[\'paged\'] : $current_page = 1;
echo $wp_query->query_vars[\'paged\'];
echo paginate_links(array(
\'base\' => get_pagenum_link(1) . \'%_%\',
\'format\' => \'/page/%#%\',
\'current\' => $current_page,
\'total\' => $total_pages,
\'prev_text\' => __(\'« prev\'),
\'next_text\' => __(\'next »\'),
));
}
}
wp_reset_postdata();
?>
</div>
</div>
</main><!-- #main -->
</div><!-- #primary -->
我的分页链接创建得很好,但我总是看到第一页,因为不知何故query_vars[\'paged\']
是emtpy。我看到了Preserving Search Page Results and Pagination
上的节this page , 但我不知道该如何使用它,但我认为在我的情况下真的不需要这样做。
EDIT 1 (Response to comment from J.D.):
您提到的那个函数只返回一个产品ID数组,为了简化代码,我删除了我的函数,改为添加一个静态数组。