从wp_list_ategories中剥离单词

时间:2014-07-23 作者:Jando

使用以下代码,我显示了子类别列表:

<ul class="subcats-blog">     
    <?php
        if ( is_category() ) {
            $current_cat = get_query_var(\'cat\');
                    wp_list_categories(\'&title_li=&child_of=\'.$current_cat);
        }
    ?>
</ul>
我想做的是从任何列表项中删除“新闻”一词。我想我可以通过使用preg\\u replace来做到这一点,但问题是我对php的知识非常有限,我无法将两者粘合在一起。任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

我假设您希望替换类别名称中的“news”字符串,而不是类别链接中的“news”字符串。

默认类别遍历器包含this line:

$cat_name = apply_filters( \'list_cats\', $cat_name, $category );
允许您修改将显示的类别名称。

因此您可以尝试(未经测试):

<ul class="subcats-blog">     
    <?php
        if ( is_category() ) {
            $current_cat = get_query_var(\'cat\');

            // Add your custom replace filter:
            add_filter( \'list_cats\', \'wpse_155534_replace\' );

            wp_list_categories(\'&title_li=&child_of=\'.$current_cat);

            // Remove your custom replace filter:
            remove_filter( \'list_cats\', \'wpse_155534_replace\' );
        }
    ?>
</ul>
在哪里

/**
 * Replace the "news" string in the category names
 *
 * @see http://wordpress.stackexchange.com/a/155539/26350
 *
 * @param  string $cat_name
 * @return string $cat_name
 */
function wpse_155534_replace( $cat_name )
{
    return str_ireplace( \'news\', \'\', $cat_name );
}

结束

相关推荐

Show post categories

我正在尝试显示一些面包屑的帖子类别。目前,我有:the_category(\' / \', \'multiple\'); 但出于某种原因,它两次声明了父类别(我只想parent > child):FASHION / DAILY FASHION CANDY / FASHION 它应该是:FASHION / DAILY FASHION CANDY 有人知道它为什么这样做,以及如何改变它吗?