WordPress WooCommerce отображает вложенную категорию продукта для отдельного продукта

У меня есть сайт WordPress WooCommerce, который продает автомобильные запчасти. Для каждой части (продукта) я создал уникальные категории продуктов, которые можно назначить этой части. Так, например Фара (часть) может быть из 3-дверного 1999 Blue Alfa Romeo 156 1.1 Руководство по бензину.

На отдельной странице товара я хочу отобразить вложенный список только тех категорий товаров, которые связаны с ЭТОЙ деталью. Поэтому, когда я отмечу деталь, у меня будет вложенный вид, как на картинке ниже.
введите описание изображения здесь

Тем не менее, мой текущий код под вторым изображением отображает все категории продуктов, которые имеют часть, связанную с ним, включая ЭТУ часть. Как видно на втором изображении ниже, у меня есть много других частей, назначенных для других марок автомобилей, и все они отображаются для этой части. Я хочу, чтобы ЭТА часть отображала Категории продуктов, связанные с ЭТИМ элементом. Таким образом, в разделе «Создать» должен отображаться только Alfa Romeo, а не все другие категории продуктов, в которых есть детали, независимо от того, отмечены ли они в ЭТОЙ детали.
введите описание изображения здесь

Может кто-нибудь, пожалуйста, помогите?

Текущий код

<?php
$woocCategoryTerms = get_terms('product_cat', array(
'order'        => 'ASC',
'hide_empty'   => true,  // (boolean)
'parent'       => 0,     // (integer) Get direct children of this term (only terms whose explicit parent is this value). If 0 is passed, only top-level terms are returned. Default is an empty string.
'hierarchical' => true,  // (boolean) Whether to include terms that have non-empty descendants (even if 'hide_empty' is set to true).
));

foreach($woocCategoryTerms as $wooCategoryTerm) :
?>
<ul>
<li>
<a href="<?php echo get_term_link( $wooCategoryTerm -> slug, $wooCategoryTerm -> taxonomy ); ?>">
<?php
echo $wooCategoryTerm -> name;
?>
</a>
<ul class="wsubcategs">
<?php
$wooSubArgs = array(
'hierarchical' => true,
'hide_empty' => true,
'parent' => $wooCategoryTerm -> term_id,
'taxonomy' => 'product_cat'
);

$wooSubCategories = get_categories($wooSubArgs);

foreach ($wooSubCategories as $wooSubCategory):
?>
<li>
<a href="<?php echo get_term_link( $wooSubCategory -> slug, $wooSubCategory -> taxonomy );?>">
<?php
echo $wooSubCategory -> name;
?>
</a>
</li>
<?php
endforeach;
?>
</ul>
</li>
</ul>
<?php
endforeach;
?>

3

Решение

get_terms возвращает все условия для конкретной заданной таксономии, а не сообщения. У вас есть несколько вариантов здесь, но я люблю использовать wp_list_categories его гибкости. Он работает не только со встроенными категориями, но и с пользовательскими таксономиями.

Вот пример из кодекса

<?php
$taxonomy = 'category'; //change to your taxonomy name

// get the term IDs assigned to post.
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
// separator between links
$separator = ', ';

if ( !empty( $post_terms ) && !is_wp_error( $post_terms ) ) {

$term_ids = implode( ',' , $post_terms );
$terms = wp_list_categories( 'title_li=&style=none&echo=0&taxonomy=' . $taxonomy . '&include=' . $term_ids );
$terms = rtrim( trim(  str_replace( '<br />',  $separator, $terms ) ), $separator );

// display post categories
echo  $terms;
}
?>

Вы также можете использовать get_the_terms

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]