突出显示wp_list_categories中的“所有”类别

时间:2011-09-22 05:07:55

标签: wordpress categories wp-list-categories

我在wp_list_categories函数中给出了以下参数。

<?php wp_list_categories('show_option_all=All&hide_empty=0&title_li=&current_category=All'); ?>

我希望“All”选项在任何类别列表中都可见。但是,由于默认情况下所有帖子都加载,因此current_category的样式也应该应用于“All”。但是,由于All没有类别ID,我不知道如何将current-cat类应用于'All'。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以将列表提取到变量中(将echo = 0添加到参数中),然后使用字符串替换插入自定义类。

更新

这样的事情:

<?php 
function str_replace_once($needle , $replace , $haystack){
    $pos = strpos($haystack, $needle);
    if ($pos === false) {
        return $haystack;
    }
    return substr_replace($haystack, $replace, $pos, strlen($needle));
}
    $args = array( 'show_option_all' => 'All',
                    'hide_empty' => '0',
                    'title_li' => '',
                    'current_category' => 'All',
                    'echo' => '0');
            $str = wp_list_categories($args);

            $str = str_replace_once('<li>', '<li class="current-cat">', $str);
            echo $str;
?>

答案 1 :(得分:0)

您可以使用 preg_replace 来消除一些复杂性。最后一个参数限制要替换的出现次数。

$list = wp_list_categories([
   'show_option_all' => 'All',
   'hide_empty' => false,
   'title_li' => '',
   'current_category' => 'All',
   'echo' => false
]);

$list = preg_replace('/<li>/', '<li class="current-cat">', $list, 1);
echo $list;