【问题标题】:add conditional body class in wordpress在 wordpress 中添加条件正文类
【发布时间】:2022-08-02 19:13:58
【问题描述】:
我想为index.php、page.php、category.php、tag.php
- 在索引.php身体类只想要的<body class\"home\">在页面.php身体类只想要的<正文类\"页面\">在类别.php body class 只想要的<body class\"cat\">在tag.php 正文班级只想要的<正文类\"标签\">在搜索.php身体类只想要的<正文类\"搜索\">
标签:
wordpress
wordpress-theming
custom-wordpress-pages
【解决方案1】:
如果你在你的模板中(通常在header.php文件中)写body标签如下,这些类将要自动添加:
<body <?php body_class(); ?> >
(请注意,类别类将是“类别”,而不是“猫”)
【解决方案2】:
您可以使用body_class 过滤器来完成此操作。下面的例子:
add_filter("body_class", function($classnames) {
$conditions = [
"search" => is_search(),
"home" => is_front_page(),
"cat" => is_category(),
"tag" => is_tag(),
"page" => is_page()
];
foreach ($conditions as $classname => $condition) {
if ($condition) {
return [ $classname ];
}
}
// return default classnames if none of the above conditions are met
return $classnames;
});
WordPress 文档:https://developer.wordpress.org/reference/hooks/body_class/
【解决方案3】:
最好将“body_class”函数放在body标签中
<body <?= body_class(); ?>>
然后您可以使用“body_class”过滤器将类添加到您的页面
add_filter( 'body_class', 'custom_class' );
function custom_class( $classes ) {
if ( is_page_template( 'page-example.php' ) ) {
$classes[] = 'example';
}
return $classes;
}
您的课程将显示在此标签中
<body class="page page-id-2 page-parent page-template-default logged-in">
供参考:https://developer.wordpress.org/reference/hooks/body_class/