【问题标题】:Wordpress WP-PageNavi not working with custom queryWordpress WP-PageNavi 不适用于自定义查询
【发布时间】:2016-10-27 09:49:22
【问题描述】:

我一直在尝试解决这个问题,但没有成功。我读过其他类似的帖子,但它们对我不起作用。

我创建了一个自定义查询,显示正确的结果和分页显示,但是当我点击第 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;

谁能帮帮我,因为这让我发疯了

亲切的问候

S

【问题讨论】:

    标签: php wordpress navigation


    【解决方案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
                                ) );
    

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

    【讨论】:

    • 感谢您的回复,但加载了相同的帖子。网址显示第 2 页,但分页仍在 1
    • 我的搜索结果使用 $wp_query 并且分页工作正常
    • 没有解决。我有一个使用 $wp_query 的搜索结果页面,并且我创建了一个自定义页面,该页面使用上面的代码显示自定义帖子,正是这个页面导致了问题。
    • 只需将当前 WP_Query 中的页面在 get_query_var('page') 更改为 get_query_var('paged') 并尝试。
    • 你可以使用wordpress标准分页,让我改一下我上面的代码。
    【解决方案2】:

    我在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'),),),));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      相关资源
      最近更新 更多