该 body_class 函数用于向 body 标签添加许多类,这些类包含有关当前显示的页面类型的信息。可能是出于样式目的。但出于某种原因,它不包含当前类别(或类别)的类,用于单个帖子。
这会添加该类别的“好”名称
add_filter('body_class','add_category_to_single');
function add_category_to_single($classes) {
if (is_single() ) {
global $post;
foreach((get_the_category($post->ID)) as $category) {
// add category slug to the $classes array
$classes[] = $category->category_nicename;
}
}
// return the $classes array
return $classes;
}
好建议!=]
只需注意,没有类别与现有的必要 body 类冲突。更好的选择是在
<body>
元素上添加一个 自定义[data-*]
属性,以便它是单独的数据例如
[data-*]
属性的优点是可以使用 CSS 对其进行样式设置太棒了!但是如何创建这个?是否可以在 functions.php 中执行此操作?
我赞同这一点。这将是一个非常优雅的解决方案。但我认为它在该过滤器/函数中不起作用。您可能需要使用 add_action 来向 body 元素添加属性。
第二个参数
$class
对我来说引发了错误。我仅删除了该参数,它完美地工作了。同上!
同上
我也是。非常感谢这段代码!
我发现了与 Kaela 相同的情况。只要我使用
$class
参数,它就可以正常工作。非常感谢!请注意,您可能不希望它在管理界面上运行。使用 is_admin() 防止它运行。
在我的 https://snapagency.com 上使用它,并且上面的建议让我花了一秒钟才弄清楚更改是什么……删除第二个 $class 解决了问题,代码如下所示
我正在努力使上述内容起作用。我尝试做的是将类别名称作为类添加到单个帖子中,即使它显示在主页或博客索引中。这样,我可以根据类别对帖子布局进行样式调整。- 例如,每个类别的文本颜色不同。
对我来说,以下代码适用于单个帖子。
但是,我需要类似的东西用于广告页面
有人可以帮我吗?
此代码似乎只添加一个类,即使帖子分配给多个类别也是如此。如何调整代码以添加每个类别的类?
那将是一个美味的调整。
你好,
它对我不起作用。body 类根本没有改变。我在我的 function.php 中复制粘贴了上面的代码段,没有其他操作。我的主题使用插件 ACF(高级自定义字段),这可能是它不起作用的原因吗。
感谢您的帮助
这适用于常规帖子类型,但不适用于自定义帖子类型,至少在我尝试时是这样。
关于如何使其也适用于自定义帖子类型的类别,您有什么想法吗?
我试图在我的主题帖子类中添加一个类,如果它来自特定类别 slug。我不想包含所有类别。