Список только wp_list_categories для текущего верхнего родителя, который просматривается - PullRequest
0 голосов
/ 09 января 2020

Я использую следующую функцию для отображения дерева категорий боковой панели:

            $args = array (
               'title_li'           => __( '' ),
               'hide_empty'         => 0,
               'show_count'         => 1,
               'use_desc_for_title' => 0,
               'child_of'           => 0
            );
            wp_list_categories( $args );

Одна запись прикреплена к нескольким родителям и подкатегориям, например:

  • Родитель A (( активный)
    • подкатегория
    • подкатегория (активная)
  • Родитель B (активный)
    • подкатегория
    • подкатегория (активная)

Проблема: В настоящее время на боковой панели отображается полное дерево родителя для подкатегорий (родитель A и родитель B), я хотел бы добиться этого, чтобы показать только текущего родителя, из которого он был перемещен (Parent A> подкатегория (активная)), который также является адресом постоянной ссылки. Он также должен работать динамически без ручной вставки идентификатора в функцию

Любой совет?

Ответы [ 3 ]

0 голосов
/ 09 января 2020

В настоящее время решается с помощью:

            $category = get_the_category($post->ID);
            $catid = $category[0]->cat_ID;
            $top_level_cat = smart_category_top_parent_id ($catid);
            $args = array (
               'title_li'           => __( '' ),
               'hide_empty'         => 0,
               'show_count'         => 1,
               'use_desc_for_title' => 0,
               'child_of'           => $top_level_cat 
            );
            wp_list_categories( $args );

Динамическое получение идентификатора категории верхнего уровня и добавление его в параметр child_of

0 голосов
/ 09 января 2020

Вы можете написать / проверить этот код на archive-product. php, чтобы показывать только родительские категории на странице. Пока показывать дочерние категории на странице родительских категорий.

<?php
$term123 = get_queried_object();
$slug=$term123->slug;
$parent_id  =$term123->parent;
$child_id=$term123->term_id;



$taxonomy_name ='product_cat';
$terms = get_terms( $taxonomy_name ); //Get all the terms
$termchildren  = get_term_children(  $child_id, $taxonomy_name  );

// Parent Categories
foreach ($terms as $term) { 
    // Check and see if the termxxxxx is a top-level parent. If so, display it.
    $parent = $term->parent;
     if ( $parent=='0' ) {
     ?>
        <li><a href="<?php echo get_term_link($term->term_id); ?>"><?php echo $term->name; ?></a></li>
    <?php
    }
}
// Child Categories
foreach ( $termchildren as $child ) {
    $termc = get_term_by( 'id', $child, $taxonomy_name );
    if ($termc->parent == $child_id) { ?>
        <li><a href="<?php echo get_term_link($termc->term_id); ?>"><?php echo $termc->name; ?></a></li>
   <?php
   } 
}
0 голосов
/ 09 января 2020

попробуйте это:

$term =  $wp_query->queried_object;
$term_id = $term->term_id;
$taxonomy_name = 'your_taxonomy';
$termchildren = get_term_children( $term_id, $taxonomy_name );

echo '<ul>';
foreach ( $termchildren as $child ) {
    $term = get_term_by( 'id', $child, $taxonomy_name );
    echo '<li><a href="' . get_term_link( $child, $taxonomy_name ) . '">' .$term->name .   '</a></li>';
}
echo '</ul>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...