我通过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; ?>
答案 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');