Wordpress WP-PageNavi无法使用自定义查询

时间:2016-10-27 09:49:23

标签: php wordpress navigation

我一直试图解决这个问题,但没有成功。我已经阅读了其他类似的帖子,但它们并不适合我。

我创建了一个自定义查询,显示正确的结果和分页显示,但是当我点击第2页等时,网址会相应更改,但相同的帖子仍然存在。

我的自定义查询是:

$sale_properties = new WP_Query(array(
'post_type'         => 'properties',
'meta_key'          => $nvr_initial.'_price',
'meta_value'        => $nvr_price,
'orderby'           => 'meta_value_num',
'order'             => 'DESC',
'paged'             => get_query_var('page'),
'meta_query' => array(
                array('key' => $nvr_initial.'_status',
                    'value' => array('For Sale'),),),));

我的其他代码是:

<?php /* Display navigation to next/previous pages when applicable */ ?>
<?php if (  $sale_properties->max_num_pages > 1 ) : ?>
 <?php if(function_exists('wp_pagenavi')) { ?>
     <?php wp_pagenavi( array( 'query' => $sale_properties ) ); ?>
 <?php }else{ ?>
    <div id="nav-below" class="navigation">
            <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Previous', THE_LANG ) ); ?></div>
            <div class="nav-next"><?php previous_posts_link( __( 'Next <span class="meta-nav">&rarr;</span>', THE_LANG ) ); ?></div>
    </div><!-- #nav-below -->
<?php }?>
<?php endif; wp_reset_query();?>

我试过了页面,分页和:

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

有人可以帮助我,因为它让我发疯了

亲切的问候

取值

2 个答案:

答案 0 :(得分:1)

将页面替换为以下代码中的分页:

    $sale_properties = new WP_Query(array(
'post_type'         => 'properties',
'meta_key'          => $nvr_initial.'_price',
'meta_value'        => $nvr_price,
'orderby'           => 'meta_value_num',
'order'             => 'DESC',
'paged'             => get_query_var('page'),
'meta_query' => array(
                array('key' => $nvr_initial.'_status',
                    'value' => array('For Sale'),),),));

$sale_properties = new WP_Query(array(
'post_type'         => 'properties',
'meta_key'          => $nvr_initial.'_price',
'meta_value'        => $nvr_price,
'orderby'           => 'meta_value_num',
'order'             => 'DESC',
'paged'             => get_query_var('paged'),
'meta_query' => array(
                array('key' => $nvr_initial.'_status',
                    'value' => array('For Sale'),),),));

或放

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
在查询上方

并在

的位置传递查询中的$ paged变量
get_query_var('page'),

希望它会有所帮助。

编辑:

Wordpress标准方式:

置于顶部:

$big = 999999999; 
    $current_page = get_query_var( 'paged', 1 );
    $args = array(
                    //your query arguments
                    'paged' => $current_page
            );
    $my_query = new WP_Query($args);

使用如下所示的循环:

while ( $my_query->have_posts() ) : $my_query->the_post();
// your code
endwhile;

然后

echo paginate_links( array(
                            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                            'format' => '?paged=%#%',
                            'current' => max( 1, get_query_var('paged') ),
                            'total' => $my_query->max_num_pages
                            ) );

放在要打印分页的位置上方。

答案 1 :(得分:0)

我在functions.php文件中有自定义的wp查询。将它移动到我的自定义页面模板后,它可以工作

$sale_properties = new WP_Query(array(
'post_type'         => 'properties',
'meta_key'          => $nvr_initial.'_price',
'meta_value'        => $nvr_price,
'orderby'           => 'meta_value_num',
'order'             => 'DESC',
'paged'             => get_query_var('paged'),
'meta_query' => array(
                array('key' => $nvr_initial.'_status',
                    'value' => array('For Sale'),),),));