2016-07-05 2 views
0

Я хочу получить количество продуктов в нескольких категориях woocommerce, учитывая тот факт, что каждая из категорий обладает некоторыми подкатегориями. Например:Номер продукта в нескольких категориях и их потомках для woocommerce

Категория с term_id 1 имеют порцию «орган» и обладает 2 подкатегорий («внутренний» с term_id 2 и «внешний» с term_id 3)

Категория с term_id 4 имеют слизь «лекарственного типа» и имеют 2 подкатегории («пилюли» с term_id из 5 и «капсула» с term_id 6)

Мой вопрос в том, как получить количество продуктов, которые находятся в категориях «орган» "и" наркотиков типа "?

Edit Version 1:

я тестировал следующий код в моей домашней странице, и он работает, и дал мне правильное количество продуктов в подкатегорий категории с слизняк из органа.

$main_product_category = get_term_by('slug', 'organ', 'product_cat'); 
$main_product_category_id = $main_product_category->term_id; 
$args = array(
    'hierarchical' => 1, 
    'show_option_none' => '', 
    'hide_empty' => 0, 
    'parent' => $main_product_category_id, 
    'taxonomy' => 'product_cat' 
); 
$subcats = get_categories($args); 
echo '<div class="quick-search-options">'; 
foreach ($subcats as $subcat) { 
    $link = get_term_link($subcat->slug, $subcat->taxonomy); 
    echo '<span> 
       <a href="'. $link .'" class="btn btn-default" data-id="'.$subcat->term_id.'" role="button">'.$subcat->name.$subcat->count.'</a> 
       </span>'; 
} 
echo '</div>'; 

Просто, чтобы сделать мое дело более понятным для вас.

Диаграмма моих категорий, как это:

enter image description here

Число в скобках количество товаров в каждой категории, и когда я запускаю код выше, это даст мне правильный номер для каждого " внутренних "и" внешних ".

Но когда я тестирую его на ajax, я дал мне только 0 продуктов, потому что он ищет продукты, которые в точности принадлежат к категории, но странно, что этот код не отличается от кода, который Я тестировал без аякса.

Любая помощь приветствуется.

ответ

0

В приведенном ниже коде указывается количество всех категорий, включая подкатегории категории. Подкатегорий продукты будут дубинка в том же ключе, как массив родительской категория:

$product_categories = get_terms('product_cat'); 
$categories_count = array(); 
foreach($product_categories as $key => $value) { 
    $category_term_id = $value->term_id; 

    if ($value->parent > 0) { 
      $category_parent_term_id = $value->parent; 
      if (!isset($categories_count[$category_parent_term_id])) { 
        $categories_count[$category_parent_term_id] = $value->count; 
      } else { 
        $categories_count[$category_parent_term_id] = $categories_count[$category_parent_term_id] + $value->count; 
      } 
    } else { 
      if (!isset($categories_count[$category_term_id])) { 
        $categories_count[$category_term_id] = $value->count; 
      } else { 
        $categories_count[$category_term_id] = $categories_count[$category_term_id] + $value->count;  
      } 
    } 
} 
echo 'Categories Count: <pre>';print_r($categories_count);echo '</pre>'; 

Там не будет каким-либо элемент массива присутствует для подкатегорий. Количество продуктов подкатегории будет в пределах

+0

@tovishlalck Спасибо за вашу быструю помощь. но проблема в том, что я не смог получить правильный счет в ajax-вызове. Я имею в виду, что у меня есть тот же код в редакторе вопрос версии 1, но другой результат в ajax и загрузке страницы по умолчанию. Не могли бы вы помочь мне, почему я получаю разные результаты при вызове ajax. – Ehsan

+0

@Ehsan Что вы получаете в вызове ajax? Что в итоге? – tovishalck

+0

@tovishlalck Я добавил полное описание, отредактировав вопрос – Ehsan

Смежные вопросы