我对woocommerce的wordpress有点意见。我必须检查一个产品是否畅销。因此,我创建了一个函数,该函数使用meta\\u键=“total\\u sales”查询产品,并将post\\u per\\u页面设置为“10”,因为我想知道前10位畅销书,并在product in shop页面上贴上“畅销书”标签,并将产品ID保存在一个数组中。这是我的函数bestSellerArray()的php代码:
$post_type_query = new WP_Query(
array(
\'post_type\' => \'product\',
\'post_status\' => \'publish\',
\'ignore_sticky_posts\' => 1,
\'posts_per_page\' => \'10\',
\'meta_key\' => \'total_sales\',
\'orderby\' => \'meta_value_num\',
\'meta_query\' => WC()->query->get_meta_query(),
\'tax_query\' => WC()->query->get_tax_query(),
\'category\' => \'\',
\'operator\' => \'IN\',
)
);
$products_ID = array();
while ($post_type_query->have_posts()){
$post_type_query->the_post();
$products_ID[] = get_the_ID();
}
wp_reset_query();
return $products_ID;
现在,当单个产品显示在商店中时,我必须比较当前产品id是否在阵列中。如果我在内容产品中调用函数bestSellerArray()。php,他们在归档产品内的wp查询中被请求。php,我将一直看到相同的产品,因为函数的wp查询改变了归档产品。php的查询。
我怎样才能做到这一点?
感谢所有人
SO网友:Marcelo Henriques Cortez
首先,你需要循环浏览这些帖子,根据他们的销售数字获取所有10篇帖子。
然后,您需要检查当前产品ID是否等于您循环的产品的任何ID。
如果是,则显示产品的“畅销书”标签。
在您的代码中,您可能在混合内容。
您的代码应该是这样的:
$post_type_query = new WP_Query(
array(
\'post_type\' => \'product\',
\'post_status\' => \'publish\',
\'ignore_sticky_posts\' => 1,
\'posts_per_page\' => \'10\',
\'meta_key\' => \'total_sales\',
\'orderby\' => \'meta_value_num\',
)
);
$products_ID = array();
while ($post_type_query->have_posts()){
$post_type_query->the_post();
$products_ID[] = get_the_ID();
}
wp_reset_query();
return $products_ID;
$id = get_the_ID();
if (in_array($id, $products_ID)) {
echo "Best Seller";
}