具有参数数组的分页自定义帖子类型查询

时间:2018-01-31 13:35:00

标签: php jquery wordpress woocommerce e-commerce

我通过meta_key及其值成功过滤了我的产品。我在自定义页面模板中显示(查询)结果。该查询还包括分页。一切正常 - 但有时在3到5页刷新之后,查询输出一些产品两次 - 尤其是在调用下一页之后。

我发现问题是由以下代码的'orderby' => 'meta_value_num'部分引起的。 知道为什么会发生这种情况并知道如何解决这个问题?

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

$args = array(
    'meta_key' => '_recoed',
    'meta_compare' => '>',
    'meta_value' => '0',
    'post_type' => 'product',           
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
    'paged' => $paged
);

query_posts($args);

get_template_part('index', 'most-liked-products');

我的页面模板中的部分看起来像

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<?php if (isset($_GET['pnum']) && $_GET['pnum'] > 1) { $paged = 2; } //stop ads from repeating ?>           

<?php
    get_template_part('index-masonry-inc');
    endwhile;
    else :
?>
....

<?php endif; ?>

1 个答案:

答案 0 :(得分:0)

我意识到'orderby' => 'meta_value meta_value_num',参数可以占用多个参数后,使用'orderby' => 'meta_value_num',代替'orderby' => '来解决问题!希望这也有助于其他人。 (More about the WP Query)

旁注:也许你们其中一个人可以告诉我们为什么这比只有一个参数更精确。请随时在下面发表评论。 THX

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

$args = array(
    'meta_key' => '_recoed',
    'meta_compare' => '>',
    'meta_value' => '0',
    'post_type' => 'product',           
    'orderby' => 'meta_value meta_value_num', // The OrderBy argument can take more then one parameter
    'order' => 'DESC',
    'paged' => $paged
);

query_posts($args);

get_template_part('index', 'most-liked-products');