如果使用主查询并使用pre_get_posts
.
所以首先,使用search.php
作为模板,并使用主查询。所以没有new WP_Query()
, 并使用have_posts()
和the_post()
函数,而不是方法。
因此,您的模板(简化)如下所示:
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// etc.
}
}
echo paginate_links();
wp_reset_postdata();
然后更改
txt_title
要使用本机的字段
s
搜索的名称。
然后,要处理额外的搜索参数,请使用pre_get_posts
挂钩:
function wpse_338980_search( $query ) {
if ( is_admin() ) {
return;
}
if ( $query->is_search() ) {
$query->set( \'posts_per_page\', 4 );
if ( isset( $_POST[\'sel_year\'] ) && isset( $_POST[\'sel_platform\'] ) ) {
$query->set( \'category_name\', $_POST[\'sel_year\'] . \'+\' . $_POST[\'sel_platform\'] );
}
if ( isset( $_POST[\'txt_genre\'] ) ) {
$query->set( \'tag\', $_POST[\'txt_genre\'] );
}
}
}
add_action( \'pre_get_posts\', \'wpse_338980_search\' );
这样做意味着主查询将根据您的搜索参数进行适当过滤,并且由于它是主查询,分页功能将立即运行。