get_terms: determinați dacă termenul taxonomiei are termeni copil

18 nov. 2014, 14:03:46
Vizualizări: 23K
Voturi: 1

Caut o modalitate de a determina dacă un termen de taxonomie are termeni copil. Vedeți codul de mai jos și vă voi explica ce vreau să spun:

<?php
$terms = get_terms("wpsc_product_category");
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach( get_terms( 'wpsc_product_category', array( 'hide_empty' => false, 'parent' => 0 ) ) as $parent_term ) { ?>
    <li class="header-menu-item" data-hook="<?php echo $parent_term->slug; ?>">
        <a href="<?php echo home_url(); ?>/products/<?php echo $parent_term->slug; ?>"><?php echo $parent_term->name; ?></a>                
    </li>
    <?php }
} ?>

Acest cod afișează o listă cu toți termenii părinte pentru taxonomia wpsc_product_category, dar vreau să determin dacă termenul taxonomiei are termeni copil sau nu, și dacă da, să adaug clasa parent la elementul header-menu-item corespunzător, astfel încât să pot atașa o funcție jQuery la acesta. Nu sunt sigur dacă acest lucru este posibil? Orice sugestii ar fi foarte apreciate!

0
Toate răspunsurile la întrebare 2
2

Funcția get_term_children ar trebui să ajute aici.

Aceasta returnează un array, fie cu termenii copil în interior, fie gol. Verificând dacă acest array este adevărat sau nu în timp ce parcurgeți, vă va permite să determinați dacă să adăugați clasa sau nu.

<?php
    $terms = get_terms('wpsc_product_category');
    if ( !empty( $terms ) && !is_wp_error( $terms ) ){
    foreach( get_terms( 'wpsc_product_category', array( 'hide_empty' => false, 'parent' => 0 ) ) as $parent_term ) {
        $term_children = get_term_children($parent_term->term_id, 'wpsc_product_category'); ?>
        <li class="header-menu-item<?php echo ($term_children ? ' parent' : ''); ?>" data-hook="<?php echo $parent_term->slug; ?>">
            <a href="<?php echo home_url(); ?>/products/<?php echo $parent_term->slug; ?>"><?php echo $parent_term->name; ?></a>                
        </li>
    <?php }
} ?>
18 nov. 2014 15:25:13
Comentarii

Mulțumesc pentru sugestie, dar nu pare să funcționeze? Am implementat codul, fără niciun efect, deoarece clasa parent nu este adăugată?

user1374796 user1374796
18 nov. 2014 15:32:08

@PieterGoosen voila! Această modificare a rezolvat problema, a funcționat perfect :)

user1374796 user1374796
18 nov. 2014 15:37:45
0

Poți încerca să utilizezi get_term_children pentru a genera un array cu toți copiii acelei taxonomii, apoi să verifici dacă este gol cu empty().

Deoarece returnează un array gol, ar trebui să poți face ceva de genul acesta:

(Va trebui să afli id-ul termenului tău, care este un număr, și să-l înlocuiești în variabila $term_id de mai jos)

$term_id = 2;
$taxonomy_name = 'wpsc_product_category';
$terms = get_term_children( $term_id, $taxonomy_name );

if ( !empty( $terms ) && !is_wp_error( $terms ) ){
 // faci ce ai de făcut
}
18 nov. 2014 15:26:48