带参数数组的分页自定义 Post 类型查询

Paginated Custom Post Type Query with Arguments Array

我成功地通过 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; ?>

在意识到 'orderby' => ' 参数可以采用多个参数后,我使用 'orderby' => 'meta_value meta_value_num', 而不是 'orderby' => 'meta_value_num', 解决了问题!希望这也能帮助其他人。 (More about the WP Query)

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

$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');