删除 wp_list_categories 列表中的 link

Remove link in wp_list_categories list

我正在使用以下代码显示我的分类 "fachbereiche" 的分层列表:

$args = array(
  'taxonomy'     => 'fachbereiche',
  'orderby'      => 'name',
  'title_li'     => '',
  'feed_type'       => '',
  'child_of'     => 12
);
?>

<ul>
<?php wp_list_categories( $args ); ?>
</ul>

显示的列表几乎不错,唯一的问题是每个分类列表项都包装在一个 link 标签中,并且 links 到分类的单个页面(我不'拥有和想要)。如何防止列表被包装在 a 标签中?

The output of the list in the frontend

你要的是get_term_children().

<?php
    $term_id = 12;
    $taxonomy_name = 'fachbereiche';
    $termchildren = get_term_children( $term_id, $taxonomy_name );

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

虽然上面的答案 "sorta" 有效,但它实际上不是 "removing" 链接,而是创建您自己的输出。

要真正删除链接,您可以这样做:

function smyles_strip_a_tags_from_wp_list_categories( $output, $args ) {
    return strip_tags( $output, '<ul><li>' );
}

add_filter( 'wp_list_categories', 'smyles_strip_a_tags_from_wp_list_categories', 9999, 2 );

$args = array(
    'taxonomy'  => 'fachbereiche',
    'orderby'   => 'name',
    'title_li'  => '',
    'feed_type' => '',
    'child_of'  => 12
);
?>

<ul>
    <?php wp_list_categories( $args ); ?>
</ul>

<?php
remove_filter( 'wp_list_categories', 'smyles_strip_a_tags_from_wp_list_categories', 9999 );

要点是我们在调用 wp_list_categories 之前在 wp_list_categories 上添加一个过滤器来调用我们的函数,该函数去除除 <ul> 和 [=14 之外的所有标签=] 标签(基本上删除链接),然后我们在输出后删除该过滤器。