【发布时间】:2011-04-05 05:06:57
【问题描述】:
我目前有一个包含硬编码类别和子类别列表的网站,其中每个项目的格式如下:
<li class="cat-item open-access"><a href="/categories/open-access/">Open Access</a></li>
重要的是,每个 <li> 项目都被分配了一个与链接到其中的类别的 slug 匹配的类。
我显然想使用 Wordpress 的 wp_list_categories() 来输出列表而不是硬编码,但需要为每个 <li> 项目保留自定义类。
我一直在研究过滤器和操作,并认为可以通过将其添加到我的主题的 functions.php 文件中来解决问题:
function add_class_from_slug($wp_list_categories) {
$pattern = '/class=\"/';
$replacement = 'class="'.$category->slug.' ';
$newclass = preg_replace($pattern, $replacement, $wp_list_categories);
return $newclass;
}
add_filter('wp_list_categories','add_class_from_slug');
但这不起作用——当页面被渲染时,$category->slug 返回的文本会丢失。如果我添加静态文本(使用像$replacement = 'class="myclass '; 这样的行,它会呈现良好。
令人沮丧的是,我可以通过添加$class .= ' '.$category->slug; 来获得我想要的输出
在正确的位置wp-includes/classes.php,但希望避免诉诸于此。
为什么我不能在我的函数中使用$category->slug?解决方法,建议,关于该主题的进一步阅读?应该补充一点,我对 PHP 有相当基本的了解。谢谢!
【问题讨论】:
标签: php wordpress wordpress-theming