Получите идентификатор текущего термина

Я использую следующий код, чтобы получить массив детей taxonomies и выписать им со ссылками в незаказанном списке.

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

То, чего я пытаюсь достигнуть, должно получить фактический термин (категория) идентификатор, таким образом, я могу заменить его на $termID и не имею к hardcode идентификатора термина.

Любая справка любезно ценилась бы!

Спасибо!

2
13.02.2012, 12:21
3 ответа

Вот функция, которую я использую для списка субтермов:

/**
 * 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>";
}

Используйте его как wp_list_categories().

Избежать get_term_by(). Это очень дорого и не необходимо.

5
19.02.2020, 22:24
  • 1
    Потрясающие Работы и я перечислил условия точно так же, как wp_list_categories.Спасибо! –  Rise 21.04.2011, 05:38

Для получения Текущего термина, можно использовать get_query_var( 'term' ); и получить текущую таксономию можно использовать get_query_var( 'taxonomy' ) таким образом, можно сделать что-то вроде этого:

$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>';
2
19.02.2020, 22:24

Или можно использовать: term_exists ($term, $taxonomy, $parent)

$term_id = term_exists( $term_name );

См. кодекс WordPress

Проверьте, существует ли данный термин, и возвратите термин идентификатор

Возвращает термин идентификатор, если никакая таксономия не была указана, и термин существует.

0
19.02.2020, 22:24

Теги

Похожие вопросы