分页失败,CPT和动态tax_query

时间:2015-11-01 16:19:54

标签: wordpress pagination custom-post-type

我有一个搜索表单。选择分类,然后选择一个或多个术语。我想对结果进行分页。

以下是代码:

    <?php

        if(isset($_POST['tax_type'])) {

        $tax_type=$_POST['tax_type'];
        $terms = $_POST[$tax_type];

                $term_list = implode("','", $terms);
                $term_list1 = implode(", ", $terms);
                $term_list = "'".$term_list."'";


                $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;  

                $giftfinder_args = array(
                'post_type' => 'products', 
                'posts_per_page'=>"1",
                'paged' => $paged,
                'tax_query' => array(
                array(
                    'taxonomy' => $tax_type,
                    'field'    => 'slug',
                    'terms'    => explode(',',$term_list),
                    ),
                ),
                );

        echo '<div class="results"><span class="eyebrow">search results</span>';        
        echo '<div class="cat_label">&#8220;' . $term_list1 . '&#8221;</div></div>';

    // the query
    $giftfinder_query = new WP_Query( $giftfinder_args );

    // Pagination fix
        $temp_query = $wp_query;
        $wp_query   = NULL;
        $wp_query   = $giftfinder_query;
?>

<?php if ( $giftfinder_query->have_posts() ) : ?>

    <!-- the loop -->
    <?php while ( $giftfinder_query->have_posts() ) : $giftfinder_query->the_post();
    $thumb = get_the_post_thumbnail(null, 'medium');
    ?>
    <div class="prod"><a href="<?php the_permalink(); ?>"><?php if(empty($thumb)) {echo '<div style="width:265px;height:265px;background:#eee;"></div>';} else {the_post_thumbnail('medium');} ?></a><span class="truncate"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span></div>

    <?php endwhile; ?>

    <div style="clear:both;"></div>
    <!-- end of the loop -->

    <?php
    the_posts_pagination( array(
        'prev_text'          => __( 'Previous page', 'twentyfifteen' ),
        'next_text'          => __( 'Next page', 'twentyfifteen' ),
        'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyfifteen' ) . ' </span>',
    ) );
    ?>

    <?php wp_reset_postdata(); ?>

    <?php else : get_template_part( 'content', 'none' ); endif; ?>
    <?php } ?>

首页很好,但分页上没有显示结果。

正如您所看到的,我尝试使用将我的查询转换为$ wp_query的分页修复程序:

// the query
$the_query = new WP_Query( $args );

// Pagination fix
    $temp_query = $wp_query;
    $wp_query   = NULL;
    $wp_query   = $the_query;

但就像我说的那样,除了第一页之外没有结果。

我打算尝试pre_get_posts,但我无法弄清楚如何对其进行编码,因为每个查询都有基于用户选择的分类和搜索术语的唯一参数。

我也试过了add_args&#39;到paginate_links()函数但无法弄清楚如何格式化生成的get字符串。

BTW,现在,查询只返回一个帖子,以便于检查分页。

任何建议表示赞赏!

1 个答案:

答案 0 :(得分:0)

不确定这是否是唯一的问题,但看起来你有一个错字。

您正在设置$ page: $page = (get_query_var('paged')) ? get_query_var('paged') : 1;

但是寻找$ paged: 'paged' => $paged,