在Wordpress header.php中,我有
<body <?php body_class($class); ?>>
如何检查特定类是否存在,然后加载标记作为结果? 对于前。
<body class"home logged-in">
<?php if $class == 'home' ?>
<div class="home"></div>
<? else : ?>
<div class="internal-page"></div>
<? endif; ?>
谢谢!
答案 0 :(得分:35)
如果您确实需要根据body_class
类使用不同的标记,请使用get_body_class
$classes = get_body_class();
if (in_array('home',$classes)) {
// your markup
} else {
// some other markup
}
但是可能有更好的方法来做到这一点,比如@ Rob对Conditional Tags的建议。这些映射与body_class
使用的类非常接近。
答案 1 :(得分:1)
您可以使用过滤器body_class
访问add_filter('body_class', function ...)
但是,我认为您采取了错误的方法。为什么不用css来满足你的需求呢?例如,.home>div { /* home styles */ }
或者您可以加载不同的样式表
add_filter('body_class', function($classes) {
if (in_array('home', $classes)) {
wp_enqueue_style('home');
}
return $classes;
});
答案 2 :(得分:0)
我遇到了与使用不同模板创建页面相同的问题,但每个页面上的自定义子菜单需要相同。
我首先尝试了这个失败的
<body <?php body_class( 'extra-class' ); ?>>
额外的类被添加到body标签中,但是当我运行错误日志时,它不在classes数组中。所以我确信它后来被添加到body标签中。
这个解决方案对我有用:
functions.php
$GLOBALS['extraBodyClass'] = '';
在模板文件中
<?php $GLOBALS['extraBodyClass'] = 'extra-class' ?>
- 模板文件中的第一行
<body <?php body_class( $GLOBALS['extraBodyClass'] ); ?>>
- 在模板名称声明
在header.php
档案
$classes = get_body_class();
if($GLOBALS['extraBodyClass']){
$classes[] = $GLOBALS['extraBodyClass'];
}