我使用了Woodmart Theme,但我的问题是,当我们有一个具有多个供应商的Woodmart产品轮播产品时,会多次显示该产品。它应该只显示价格最低的其中之一。 在这里,我有WCFM支持团队提供的代码,但是不起作用:
add_filter('posts_clauses', function ($query_args) {
global $WCFM, $wpdb;
if (!wcfm_is_store_page() && apply_filters('wcfm_is_allow_product_loop_duplicate_hide', true)) {
$more_offers = $wpdb->get_results("SELECT GROUP_CONCAT(product_id) as products, parent_product_id FROM `{$wpdb->prefix}wcfm_marketplace_product_multivendor` GROUP BY parent_product_id");
$exclude = array();
if (!empty($more_offers)) {
foreach ($more_offers as $key => $value) {
$product_ids = $value->products . ',' . $value->parent_product_id;
$sql = "SELECT product_id, stock_status, stock_quantity FROM {$wpdb->wc_product_meta_lookup} wc_product_meta_lookup WHERE product_id IN ({$product_ids}) ORDER BY wc_product_meta_lookup.min_price ASC";
$product_metas = $wpdb->get_results($sql);
if (!empty($product_metas)) {
$is_first = true;
foreach ($product_metas as $pmkey => $product_meta) {
if ($product_meta->stock_status == 'outofstock') continue;
$post_status = get_post_status($product_meta->product_id);
if ($post_status != 'publish') continue;
if ($is_first) {
$is_first = false;
continue;
}
$exclude[] = $product_meta->product_id;
}
}
}
}
if (!empty($exclude)) {
if (isset($query_args['post__in'])) {
$query_args['post_in'] = array_diff($query_args['post_in'], $exclude);
} else {
$query_args['post__not_in'] = $exclude;
}
}
}
return $query_args;
}, 50);
请给我一个解决办法。