WooCommerce — Как получить категорию в карточке товара?

WooCommerce — Как получить категорию в карточке товара?
WooCommerce - Как получить категорию в карточке товара?

Товар WC может принадлежать к одной или нескольким категориям woocommerce.

Предположим, вы просто хотите получить один идентификатор категории WC.

global $post;
$terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($terms as $term) {
    $product_cat_id = $term->term_id;
    break;
}

В файле meta.php в папке «templates / single-product /» плагина WooCommerce есть такой вариант вывода категорий товара:

<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', sizeof( get_the_terms( $post->ID, 'product_cat' ) ), 'woocommerce' ) . ' ', '.</span>' ); ?>

Как вывести название категорий в карточке товара с иерархией?

Для получения структуры Вам необходимо выстроить иерархию для каждой категории. Причем, может случиться так, что Ваш товар включен в родительскую категорию, в категорию потомка(3е колено), а в дочернюю не включен. Тогда получается нужно исключать отсутствующую дочернюю категорию из структуры.

/**
* Собирает родословную в строку [предок-родитель-потомок] или
* в массив ([0]=>предок,[1]=>родитель,[2]=>потомок) проверяя наличие id
* @param array $ids - массив типа id=>parent_id, на основании которого
* 						собирается родословная
* @param number $id - для кого строится родостловная, он же потомок
* @param string $divider - символ разделитель, если пусто cобирать в массив
* @return
*/
function create_hierarchical_path($ids, $id, $divider = ''){
  if ('' !== $divider){	//собираем строку
    $result = $id;
    while(isset($ids[$id]) && $ids[$id] != 0){
      $result = $ids[$id].$divider.$result;
      $id = $ids[$id];
    }
  }
  else {					// собираем массив
    $result = array();
    array_push ($result, $id);
    while(isset($ids[$id]) && $ids[$id] != 0){
      $id = $ids[$id];
      array_push ($result, $id);
    }
    $result = array_reverse($result);
  }
  return $result;
}

Получить список всех категорий можно так:

$args = array(
    'taxonomy'=>'product_cat',
    'hide_empty'=>0,
    'fields'=>'id=>parent'	);
  // получаем список всех категорий
  $ids = get_terms('product_cat', $args);

вывоз мусора днепр вывоз мусора днепр