Сортировать товары WooCommerce по подкатегориям - PullRequest
0 голосов
/ 26 июня 2019

Мне нужно отсортировать продукты woocommerce на странице магазина по подкатегории, принадлежащей к родительской категории.Например, у меня есть родительская категория «Бренд», и у меня есть дочерние категории «Бренд 1», «Бренд 2», «Бренд 3» и т. Д.

Мне нужно отсортировать товар так, чтобы первые товары на странице магазина былипродукт от Бренда 1, затем от Бренда 2, затем от Бренда 3 и т. д.

Я думаю, что это может помочь: Заказ по индивидуальной сортировке продуктов Woocommerce в WP_Query

Я могу отобразить подкатегорию каждого продукта в цикле продукта, используя этот код:

add_action( 'woocommerce_after_shop_loop_item_title', 'bbloomer_show_all_subcats', 2 );

function bbloomer_show_all_subcats() {
  global $post;
  $cats = get_the_terms( $post->ID, 'product_cat' );
  if ( ! empty( $cats ) ) {
    foreach ( $cats as $term ) {
        // If parent cat ID = 25 echo subcat name...
        if( $term->parent == 25 ) { 
        echo $term->name;
        }
    }
  }
}

Теперь мне нужно отсортировать продукты на основе этих подкатегорий.

Спасибо!

1 Ответ

0 голосов
/ 26 июня 2019

Вот как вы можете легко получить подкатегорию категорий продуктов WooCommerce с помощью пользовательской функции, которая использует преимущества пули родительской категории продукта.

function woocommerce_get_product_category_of_subcategories( $category_slug ){
  $terms_html = array();
  $taxonomy = 'product_cat';

  $parent = get_term_by( 'slug', $category_slug, $taxonomy );

  $children_ids = get_term_children( $parent->term_id, $taxonomy );


  foreach($children_ids as $children_id){
        $term = get_term( $children_id, $taxonomy ); 
        $term_link = get_term_link( $term, $taxonomy ); 
        if ( is_wp_error( $term_link ) ) $term_link = '';

        $terms_html[] = '<a href="' . esc_url( $term_link ) . '" rel="tag" class="' . $term->slug . '">' . $term->name . '</a>';
  }
  return '<span class="subcategories-' . $category_slug . '">' . implode( ', ', $terms_html ) . '</span>';
}

В приведенном выше фрагменте кода объект WP_Term получает категорию продуктародитель.Затем он получает дочерний идентификатор в массиве.Наконец, дочерние категории отображаются в HTML, выполняя цикл через массив дочерних идентификаторов.

Для получения более подробной информации посмотрите https://www.cloudways.com/blog/display-categories-in-woocommerce/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...