Afișează toate subcategoriile dintr-o categorie specifică?

30 mai 2013, 12:47:47
Vizualizări: 75.6K
Voturi: 9

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?

0
Toate răspunsurile la întrebare 2
13
22

Î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>';
}

Sursă/inspirație

Editare:

Am completat codul, l-am testat, vezi comentariile

30 mai 2013 13:43:29
Comentarii

Mulțumesc, dar nu știu cum să introduc acel cod în al meu, oricum am găsit acest cod:

[http://wordpress.stackexchange.com/questions/73795/how-to-split-the-categories-of-subcategories-with-thumbnails]

dar afișează Toate categoriile, am nevoie doar de o singură categorie selectată cu subcategoriile sale

Yhis Yhis
30 mai 2013 13:51:48

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

Yhis Yhis
30 mai 2013 14:20:06

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.

Nicolai Grossherr Nicolai Grossherr
30 mai 2013 14:36:35

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.

Yhis Yhis
30 mai 2013 14:49:55

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

Yhis Yhis
30 mai 2013 15:27:46

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

Yhis Yhis
30 mai 2013 15:54:50

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?

Yhis Yhis
30 mai 2013 16:09:55

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

Nicolai Grossherr Nicolai Grossherr
30 mai 2013 16:36:26

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

Yhis Yhis
30 mai 2013 16:39:38

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.

Yhis Yhis
30 mai 2013 16:48:49

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

Yhis Yhis
30 mai 2013 16:51:42

Î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!

Nicolai Grossherr Nicolai Grossherr
30 mai 2013 16:56:27

Mulțumesc pentru asta :)

Adrian Adrian
18 dec. 2020 17:18:57
Arată celelalte 8 comentarii
1

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; ?> 
11 dec. 2014 04:27:10
Comentarii

O formă mai simplă a răspunsului lui @mikes fără opțiunea de imagine - poate înlocui liniile 6-10 cu: <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>

Jon Jon
27 mai 2015 15:14:31