【问题标题】:How to Check for Class in body_class() in Wordpress如何在 Wordpress 中检查 body_class() 中的类
【发布时间】:2013-02-22 21:58:28
【问题描述】:

在 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; ?>

谢谢!

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    如果你真的,真的需要使用基于 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 使用的类非常接近。

    【讨论】:

    • 我已经尝试过使用 'get_body_class();' 获取正文类的方法,但是当遍历数组并回显内容时,它会吐出所有的类标签,除了我手动的那个添加了“body_class($class);”。难道我做错了什么?我可以在 body 标签中看到我的班级,但是 'get_body_class();'里面没有...
    • @KerynGill :听起来您的问题与 OP 中的不同。您可能应该提出问题或自己提出问题,并提供您的代码供我们评估。
    【解决方案2】:

    您可以使用过滤器add_filter('body_class', function ...) 访问body_class,但是,我认为您采取了错误的方法。为什么不只使用 css 来满足您的需要?例如.home&gt;div { /* home styles */ }

    或者您可以加载不同的样式表

    add_filter('body_class', function($classes) {
        if (in_array('home', $classes)) {
            wp_enqueue_style('home');
        }
        return $classes;
    });
    

    【讨论】:

    • 我想采用这种方法而不是添加带有特定类的样式表,这样我就可以只为主页加载特定的部分,或者加载另一个 php sn-p 或基于另一个的标记类。
    • 那我建议使用conditional tags
    【解决方案3】:

    我在使用不同模板创建页面时遇到了同样的问题,但是每个页面上的自定义子菜单需要相同。

    我先试了这个失败了

    &lt;body &lt;?php body_class( 'extra-class' ); ?&gt;&gt;

    额外的类被添加到正文标记中,但是当我运行错误日志时,它不在类数组中。所以我确信它后来被添加到 body 标签中。

    这个解决方案对我有用:

    functions.php

    $GLOBALS['extraBodyClass'] = '';

    在模板文件中

    &lt;?php $GLOBALS['extraBodyClass'] = 'extra-class' ?&gt; - 模板文件的第一行

    &lt;body &lt;?php body_class( $GLOBALS['extraBodyClass'] ); ?&gt;&gt; - 在模板名称声明之后

    header.php 文件中

    $classes = get_body_class();
    if($GLOBALS['extraBodyClass']){
       $classes[] = $GLOBALS['extraBodyClass'];
    }
    

    【讨论】:

    • 你的答案是关于在body标签中添加一个类,而这个问题是关于找出一个特定的类是否被添加到body标签中。
    • 如果您阅读了他对best answer 的回答,他说使用&lt;body &lt;?php body_class($class); ?&gt;&gt; 添加课程不起作用。这也是我的问题,我添加的方法对我有用。
    • +1 我不知道为什么这个答案被否决了。它提供了一种替代方法,在我的案例中实际上是完美的解决方案,与 OP 有类似的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多