Obține ID-ul termenului curent

21 apr. 2011, 04:25:29
Vizualizări: 32.4K
Voturi: 2

Folosesc următorul cod pentru a obține un array cu taxonomiile copil și pentru a le afișa cu linkuri într-o listă neordonată.

    <?php
$termID = 10;
$taxonomyName = "products";
$termchildren = get_term_children( $termID, $taxonomyName );

echo '<ul>';
foreach ($termchildren as $child) {
    $term = get_term_by( 'id', $child, $taxonomyName );
    echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
?>

Ceea ce încerc să realizez este să obțin ID-ul termenului (categoriei) actual astfel încât să-l pot înlocui în $termID și să nu trebuiască să hardcodez ID-ul termenului.

Orice ajutor ar fi foarte apreciat!

Mulțumesc!

0
Toate răspunsurile la întrebare 4
1

Iată o funcție pe care o folosesc pentru a lista subtermeni:

/**
 * Listează toate subintrările unei taxonomii.
 *
 * @return void
 */
function ttt_get_subterms( $args = array () )
{
    if ( ! isset ( get_queried_object()->taxonomy ) )
    {
        return;
    }

    $options = array (
        'child_of'           => get_queried_object_id()
    ,   'echo'               => 0
    ,   'taxonomy'           => get_queried_object()->taxonomy
    ,   'title_li'           => FALSE
    ,   'use_desc_for_title' => FALSE
    );

    $settings = array_merge( $options, $args );

    $subtermlist = wp_list_categories( $settings );

    // Fără rezultate, WP creează un element dummy. Acesta nu conține link-uri.
    ! empty ( $subtermlist ) and FALSE !== strpos( $subtermlist, '<a ' )
        and print "<ul class=subterms>$subtermlist</ul>";
}

Folosește-o ca wp_list_categories().

Evită get_term_by(). Este foarte costisitoare și nu este necesară.

21 apr. 2011 05:13:41
Comentarii

Funcționează excelent și obțin termenii listați exact ca wp_list_categories. Mulțumesc!

Rise Rise
21 apr. 2011 05:38:31
0

Pentru a obține termenul curent, puteți folosi get_query_var( 'term' );, iar pentru a obține taxonomia curentă puteți folosi get_query_var( 'taxonomy' ), astfel încât puteți face ceva de genul:

$term_slug = get_query_var( 'term' );
$taxonomyName = get_query_var( 'taxonomy' );
$current_term = get_term_by( 'slug', $term_slug, $taxonomyName );
$termchildren = get_term_children( $current_term->term_id, $taxonomyName );

echo '<ul>';
foreach ($termchildren as $child) {
    $term = get_term_by( 'id', $child, $taxonomyName );
    echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
21 apr. 2011 04:43:43
0

Sau poți folosi: term_exists( $term, $taxonomy, $parent )

$term_id = term_exists( $term_name );

Vezi WordPress Codex

Verifică dacă un termen dat există și returnează ID-ul termenului

Returnează ID-ul termenului dacă nu a fost specificată nicio taxonomie și termenul există.

4 feb. 2013 13:19:01
0

Pentru a obține ID-ul termenului curent, folosește:

$term_id = get_queried_object()->term_id;

get_query_var nu poate fi utilizat în acest caz, deoarece term_id nu se află în lista de variabile disponibile public.

21 mai 2018 19:35:05