我是新手来循环自定义,我的问题是我的搜索页面前端过滤器循环的工作方式与我的其他类别模板后循环相同。
这是我用于类别模板的循环,它可以正常工作。
<?php $custom_query_args = array( 'cat' => '2', 'posts_per_page' => 6 );
$custom_query_args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$custom_query = new WP_Query( $custom_query_args );
$temp_query = $wp_query;
$wp_query = NULL;
$wp_query = $custom_query;
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) :
$custom_query->the_post(); ?>
这允许我对此类别中的所有帖子进行分页,但我需要在我的搜索页面上转换类似的代码块以允许它执行相同的操作,目前下面的搜索模板代码并不像上面那样分页。
<?php wp_reset_postdata();
global $wp_query;
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
foreach($_POST['filter_cat'] as $fcat){$fcat_list .= $fcat . ",";}
query_posts(
array_merge(
array(
'cat' => $fcat_list,
'posts_per_page' => 6,
'paged' => $paged
),
$wp_query->query
)
); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
我知道第一个代码块是一个更好的方法,但我无法以同样的方式弄清楚如何使用第二个块。
编辑:
好的,请原谅我的经验不足。
感谢Pieter Goosen,我在使用pre_get_posts方面有所作为。
我已成功使用类别模板,但使用以下搜索页面模板会杀死网站,我不知道我哪里出错了。
function paginate_search ( $query ) {
if( $query->!is_admin() ) {
foreach($_POST['filter_cat'] as $fcat){$fcat_list .= $fcat . ",";}
query_posts( array_merge ( array (
'cat' => $fcat_list,
'posts_per_page' => 6,
'paged' => $paged
),
$wp_query->query
) ); } }
add_action( 'pre_get_posts', 'paginate_search' );