Obtener el ID del término actual

2

Estoy usando el siguiente código para obtener una serie de taxonomías infantiles y escribirlas con enlaces en una lista desordenada.

    <?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>';
?>

Lo que estoy tratando de lograr es obtener el ID del término (categoría) real para poder reemplazarlo en $ termID y no tengo que codificar el ID del término.

Cualquier ayuda sería apreciada amablemente!

¡Gracias!

    
pregunta Rise 21.04.2011 - 03:25

4 respuestas

5

Aquí hay una función que utilizo para enumerar subterms:

/**
 * Lists all subentries of a taxonomy.
 *
 * @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 );

    // Without results WP creates a dummy item. It doesn't contain links.
    ! empty ( $subtermlist ) and FALSE !== strpos( $subtermlist, '<a ' )
        and print "<ul class=subterms>$subtermlist</ul>";
}

Úselo como wp_list_categories() .

Evita get_term_by() . Es muy caro y no es necesario.

    
respondido por el fuxia 21.04.2011 - 04:13
1

Para obtener el término actual, puede usar get_query_var( 'term' ); y para obtener la taxonomía actual puede usar get_query_var( 'taxonomy' ) para que pueda hacer algo como esto:

$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>';
    
respondido por el Bainternet 21.04.2011 - 03:43
0

O puede usar: term_exists ($ term, $ taxonomy, $ parent)

$term_id = term_exists( $term_name );

Consulte WordPress Codex

  

Compruebe si existe un término determinado y devuelva el ID de término

     

Devuelve el ID de término si no se especificó una taxonomía y el término existe.

    
respondido por el Alex 04.02.2013 - 12:19
0

Para obtener el ID del término actual, use :

$term_id = get_queried_object()->term_id;

get_query_var no se puede usar en este caso, ya que term_id no está en list de vars disponibles públicamente.

    
respondido por el The J 21.05.2018 - 18:35

Lea otras preguntas en las etiquetas