如何同时将WordPress分类术语生成列表并设置slug为类名?
解决WordPress分类术语列表项类名对应slug的问题
我明白你现在的困扰啦——你想让每个分类术语对应的列表项,单独拥有自己的slug作为类名,但目前的代码把所有术语的slug都堆到了每个列表项的类里,这显然不是你想要的效果。咱们来修正一下代码:
<?php // 获取当前文章的指定分类术语 $terms = get_the_terms($post->ID, 'events17groups'); // 检查是否成功获取到术语且没有错误 if ($terms && !is_wp_error($terms)) : echo '<ul>'; // 循环遍历每个术语 foreach ($terms as $term) { // 为每个列表项单独设置对应术语的slug作为类名,同时做安全转义 echo '<li class="' . esc_attr($term->slug) . '">' . esc_html($term->name) . '</li>'; } echo '</ul>'; endif; ?>
代码说明:
- 去掉了原来把所有slug合并成一个类的逻辑,改为在循环每个术语时单独生成列表项,这样每个
<li>的class就只会对应当前术语的slug。 - 使用
esc_attr()对slug进行转义,确保类名的安全性(避免特殊字符导致的HTML语法问题或XSS风险)。 - 使用
esc_html()对术语名称进行转义,同样是WordPress开发中的安全最佳实践。 - 如果你的需求是在列表项里显示术语的slug而不是名称,只需要把
esc_html($term->name)替换成esc_html($term->slug)即可。
内容的提问来源于stack exchange,提问作者Ruth
相关产品推荐
相关产品推荐

