删除wp_list_categories列表中的链接

时间:2016-12-08 14:09:00

标签: wordpress taxonomy wp-list-categories

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

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

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

显示的列表几乎是好的,唯一的问题是每个分类列表项都包含在链接标记中并链接到分类法的单个页面(我没有和想要的)。如何防止列表包含在a-tag中?

The output of the list in the frontend

2 个答案:

答案 0 :(得分:0)

你想要的是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>';
?>

答案 1 :(得分:0)

虽然上述“ sorta”的答案有效,但实际上并不是“删除”链接,而是创建自己的输出。

要实际删除链接,您可以执行以下操作:

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><li>之外的所有标签的函数标签(实际上是删除链接), ,然后在输出后删除该过滤器。