Я использовал тему Woodmart. Моя проблема заключается в том, что когда у нас есть один продукт с несколькими поставщиками, карусель продуктов 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);
, пожалуйста, дайте мне решение.