rise
  • 0
Новичок

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

  • 0

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

    <?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 и мне не нужно жестко кодировать идентификатор термина.

Любая помощь будет любезно оценена!

Спасибо!

Share
  1. Вот функция, которую я использую для перечисления подтерминов:

    /**
     * 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() . Это очень дорого и не нужно.

    • 0
  2. Чтобы получить текущий термин, который вы можете использовать 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>';
    
    • 0
  3. Или вы можете использовать: term_exists ($term, $taxonomy, $parent)

    $term_id = term_exists( $term_name );
    

    См. Кодекс WordPress

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

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

    • 0
  4. Чтобы получить идентификатор текущего термина, используйте :

    $term_id = get_queried_object()->term_id;
    

    get_query_var нельзя использовать в этом случае, так term_id как его нет в списке переменных, доступных публично.

    • 0

Оставить ответ

You must login to add an answer.