如何修复WordPress中body_class添加data属性失效的问题?
修复WordPress body标签添加data属性的问题
你当前的问题出在用错了过滤器:body_class这个钩子是专门用来管理<body>标签的class属性的,不管你往数组里加什么字符串,都会被当成class值的一部分,所以才会把data-tipology="lesson"变成class。
下面给你两种靠谱的修复方法:
方法一:用官方推荐的body_attributes过滤器(WordPress 5.8及以上版本适用)
这个过滤器是WordPress专门用来处理body标签所有属性的,直接往属性数组里添加键值对就行:
function edi_custom_body_attributes( $attributes ) { // 判断当前是否是sfwd-lessons的单页 if ( is_singular('sfwd-lessons') ) { $attributes['data-tipology'] = 'lesson'; } return $attributes; } add_filter( 'body_attributes', 'edi_custom_body_attributes' );
方法二:手动修改主题header.php(兼容旧版WordPress)
如果你的WordPress版本低于5.8,没法用上面的钩子,可以直接修改主题的header.php文件:
- 找到文件里的
<body>标签行,通常是这样:
<body <?php body_class(); ?>>
- 改成带条件判断的代码:
<?php // 初始化属性字符串 $extra_body_attrs = ''; // 判断当前页面类型 if ( is_singular('sfwd-lessons') ) { $extra_body_attrs .= ' data-tipology="lesson"'; } ?> <body <?php body_class(); ?><?php echo $extra_body_attrs; ?>>
注意:如果用的是官方主题或第三方主题,建议先创建子主题再修改,避免主题更新时丢失修改内容。
内容的提问来源于stack exchange,提问作者bsiglio
相关产品推荐
相关产品推荐

