2016-09-11 3 views
1

WooCommerce шаблона сопутствующих товаров расположен на:WooCommerce - Заказ сопутствующих товаров от продаж пользовательских вычислений

/wp-content/plugins/woocommerce/templates/single-product/related.php 

Но в настоящее время порядка по случайному.

Я хотел бы заказать что 'total_sales' + 'sales_count' (те 2 meta_keys удерживать целые значения и 'sales_count' является дополнительным пользовательских поле).

Вот запрос:

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type'   => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows'  => 1, 
    'posts_per_page'  => 4, 
    'orderby' => 'total_sales', 
    'order' => 'DESC', 
    'post__in'    => $related 
)); 
    $products = new WP_Query($args); 

Вышеприведенные сортировать запрос продукты купить total_sales, но мне нужно, чтобы разобраться, что с помощью суммы total_sales и sales_count?

Есть ли способ сделать это ?.

Благодаря

+0

Извините, я добавил дополнительную информацию. Он просто нуждается в порядке суммой двух настраиваемых полей, остальные параметры являются нормальными. –

+0

total_sales value increment by wocommerce, когда клиенты размещают заказы, которые также имеют пользовательское поле, sales_count настраиваемое поле, добавленное мной, которое также удерживайте некоторое целое число, использование sales_count - это использование для отображения на страницах продукта sales_count + total_sales.поэтому у продукта нет фактических продаж раньше, продукт показывает некоторые продажи с использованием поля sales_count –

+0

$ units_sold = get_post_meta ($ product-> id, 'total_sales', true); $ soldty = get_post_meta ($ product-> id, 'sales_count', true); echo 'Sales:'. ($ Units_sold + $ soldty); –

ответ

1

Я не очень хорошо понимаю, цель $soldty = get_post_meta($product->id, 'sales_count', true);, по умолчанию 'total_sales' для продукта делает уже расчет всех проданных товаров (количество проданный деталь добавляется каждый время до счета).

В любом случае, если вам действительно нужен этот расчет, лучшим вариантом будет сделать функцию, которая будет создавать/обновлять новое пользовательское поле, для каждого продукта, с тем расчетом:

add_action('wp_loaded', 'products_update_total_sales_calculation'); 
function products_update_total_sales_calculation(){ 
    $sales = array(); 
    $all_products = get_posts(array(
     'post_type'   => 'product', 
     'post_status'   => 'publish', 
     'posts_per_page'  => -1, 
    )); 
    foreach($all_products as $item) { 
     $units_sold = get_post_meta($item->ID, 'total_sales', true); 
     $soldty = get_post_meta($item->ID, 'sales_count', true); 
     if(empty($soldty)) $soldty = 0; 
     $result = $units_sold + $soldty; 
     update_post_meta($item->ID, 'global_sales_count', $result); 
    } 
} 

Эта функция делает расчет продаж продукта и создает/обновляет настраиваемое поле 'global_sales_count' с расчетным значением в нем.

Теперь вы можете настроить ваш запрос 'orderby' аргумент на основе этого нового пользовательского поля:

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type'   => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows'  => 1, 
    'posts_per_page'  => 4, 
    'meta_key'    => 'global_sales_count', // <== <== the new custom field 
    'orderby'    => 'meta_value_num', 
    'order'    => 'DESC', 
    'post__in'    => $related 

)); 
    $products = new WP_Query($args); 

Если вам не нужен ваш расчет, значение 'meta_key' будет изменено на существующий 'total_sales'meta_key, таким образом:

$args = apply_filters('woocommerce_related_products_args', array(
    'post_type'   => 'product', 
    'ignore_sticky_posts' => 1, 
    'no_found_rows'  => 1, 
    'posts_per_page'  => 4, 
    'meta_key'    => 'total_sales', // <== <== the existing meta_key 
    'orderby'    => 'meta_value_num', 
    'order'    => 'DESC', 
    'post__in'    => $related 

)); 
    $products = new WP_Query($args);