Afișează toate subcategoriile dintr-o categorie specifică?
Am nevoie să afișez toate subcategoriile folosind
$product_category = wp_get_post_terms( $post->ID, 'product_cat' );
momentan folosesc:
<?php
global $post;
$terms = get_the_terms( $post->ID, 'product_cat', 'hide_empty=0' );
foreach ( $terms as $term ){
$category_id = $term->term_id;
$category_name = $term->name;
$category_slug = $term->slug;
echo '<li><a href="'. get_term_link($term->slug, 'product_cat') .'">'.$category_name.'</a></li>';
}
?>
E ok dar afișează doar categoria părinte și o singură subcategorie...
Cum pot remedia asta?

Încearcă ceva de genul acesta:
după ID
function woocommerce_subcats_from_parentcat_by_ID($parent_cat_ID) {
$args = array(
'hierarchical' => 1,
'show_option_none' => '',
'hide_empty' => 0,
'parent' => $parent_cat_ID,
'taxonomy' => 'product_cat'
);
$subcats = get_categories($args);
echo '<ul class="wooc_sclist">';
foreach ($subcats as $sc) {
$link = get_term_link( $sc->slug, $sc->taxonomy );
echo '<li><a href="'. $link .'">'.$sc->name.'</a></li>';
}
echo '</ul>';
}
după NUME
function woocommerce_subcats_from_parentcat_by_NAME($parent_cat_NAME) {
$IDbyNAME = get_term_by('name', $parent_cat_NAME, 'product_cat');
$product_cat_ID = $IDbyNAME->term_id;
$args = array(
'hierarchical' => 1,
'show_option_none' => '',
'hide_empty' => 0,
'parent' => $product_cat_ID,
'taxonomy' => 'product_cat'
);
$subcats = get_categories($args);
echo '<ul class="wooc_sclist">';
foreach ($subcats as $sc) {
$link = get_term_link( $sc->slug, $sc->taxonomy );
echo '<li><a href="'. $link .'">'.$sc->name.'</a></li>';
}
echo '</ul>';
}
Editare:
Am completat codul, l-am testat, vezi comentariile

Mulțumesc, dar nu știu cum să introduc acel cod în al meu, oricum am găsit acest cod:
dar afișează Toate categoriile, am nevoie doar de o singură categorie selectată cu subcategoriile sale

Mulțumesc prietene, l-am copiat și lipit în fișierul meu woocommerce-template.php în partea unde am nevoie să-l folosesc, dar afișează toate categoriile și nicio subcategorie; te rog să arunci o privire la link-ul pe care l-am postat mai sus, ar trebui să fie la fel dar cu o singură categorie și subcategoriile sale

Am aruncat o privire rapidă la codul din întrebările pe care le-ai legat. Ceea ce încerci să faci este să folosești doar ceea ce este asociat cu $sub_cats = get_categories( $args2 )
și partea cu $args2 = array( ... )
, dar totuși, ceea ce am sugerat eu este cam același lucru. Așa că nu sunt chiar sigur de ce nu funcționează pentru tine.

dacă elimin function woocommerce_subcats_from_parentcat($parent_cat) {
funcționează, dar afișează doar categoriile principale, nu subcategoriile, dacă copiez și lipesc codul tău exact așa cum este, afișează gol, nimic.

Ok, afișează subcategoriile și nu categoria principală, dar numai dacă pun '23', cu '21' este complet gol.. mulțumesc pentru ajutor, dacă ai putea repara această ultimă mică problemă ar fi minunat pentru mine

ok funcționează, am nevoie doar să afișez categoria principală deasupra subcategoriilor: CATEGORIE PRINCIPALĂ - sub categorie - sub categorie

bine, prietene, totul funcționează perfect! mulțumesc mult!! doar o mică întrebare: este posibil să afișez întotdeauna categoria principală când dau click pe o subcategorie?

cu siguranță este posibil, dar mi se pare o întrebare, pune-o cum trebuie; asta te-ar putea ajuta: http://wordpress.stackexchange.com/questions/56784/get-main-parent-categories-for-a-product

da, probabil este cea mai bună soluție, dar cum pot apela aceste două funcții în pagina mea?

oricum, problema rămâne: woocommerce_subcats_from_parentcat_by_ID($parent_cat_ID) afișează doar subcategorii, iar woocommerce_subcats_from_parentcat_by_NAME($parent_cat_NAME) afișează doar TOATE categoriile principale fără subcategorii.

Am nevoie de o structură MAIN->sub și când dau click pe o subcategorie, ar trebui să fie la fel ca părintele 'MAIN->sub'. Vreau ca acest tip de meniu să nu se schimbe dacă dau click pe MAIN sau pe o subcategorie

În primul rând, ambele funcții funcționează perfect pentru mine, poate le folosești greșit pe una dintre ele. În al doilea rând, ar trebui să poți obține comportamentul dorit cu informațiile de aici și din întrebarea legată mai sus. Mult succes!

Iată codul care a funcționat pentru mine într-un șablon de pagină (ID-ul părintelui meu era 7):
<?php $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'parent' => 7, ));
foreach($wcatTerms as $wcatTerm) :
$wthumbnail_id = get_woocommerce_term_meta( $wcatTerm->term_id, 'thumbnail_id', true );
$wimage = wp_get_attachment_url( $wthumbnail_id );
?>
<div><a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>">
<?php if($wimage!=""):?><img src="<?php echo $wimage?>" class="aligncenter" alt="<?php echo $wcatTerm->name; ?>" title="<?php echo $wcatTerm->name; ?>"><?php endif;?></a>
<h3 class="text-center"><a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a></h3>
</div>
<?php endforeach; ?>
