创建要在查询内进行比较的全局数组

时间:2017-11-22 作者:Jhon

我对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的查询。

我怎样才能做到这一点?

感谢所有人

1 个回复
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";
}

结束

相关推荐

存档页面中的辅助WP_QUERY被覆盖

我在存档页上遇到了一个特殊的问题。这个特定页面应该列出属于某个类别的所有帖子,但可以通过第二个(自定义)分类法进行过滤:即:同时属于“新闻”和“娱乐”的帖子(后者属于“主题”分类法)。问题是,如果没有属于这两个分类术语的帖子,则不应该出现过滤器链接,但到目前为止,我还无法删除“空”链接,因为查询被主链接覆盖——下面是一些代码来解释:if ( is_single() ) { $cats = get_the_category(); $cat = $cats[0]; }