向BODY_CLASS函数添加类

时间:2014-05-07 作者:David H

基本上,我已经应用这种方法在页面上显示某些颜色,如搜索。php或主页上的列表。它所做的是读取一个从WP中获取字段的变量,如果该字段等于某个数字,那么它会添加一个在CSS中有颜色的类名现在单个页面上的字段就在那里,尽管每当我添加我在其他页面上应用的“if系统”时,它不会在标题的正文中添加类。php。现在,这在其他页面(不是全局页面,而是单独页面)上正常工作,但由于某些原因,在这里无法正常工作。

在收割台上。php:

<?php
    //Body class
    if($mem_id == 1)          { $class =  \'color1\';    }
    if($mem_id == 2)          { $class =  \'color2\';    }         
    if($mem_id == 3)          { $class =  \'color3\';    }
    if($mem_id == 4)          { $class =  \'color4\';    }
    if($mem_id == 5)          { $class =  \'color5\';    }
    if($mem_id == 6)          { $class =  \'color6\';    }
    if($mem_id == 7)          { $class =  \'color7\';    }
    if($mem_id == 8)          { $class =  \'color8\';    }
    if($mem_id == 9)          { $class =  \'color9\';    }
?>
<body <?php body_class($class); ?>>
在其他页面中:$mem_id = get_field(\'memtype_id\');

2 个回复
最合适的回答,由SO网友:kaiser 整理而成

实际上你只需要回电话body_class 滤器然后只需检查元数据与实际值之间的相关性:如果是1:1的相关性,只需将get_field() 作为新的车身等级。示例:array( get_field( \'mem_id\' ) ) 如果mem_id 元值为color3 例如,如果不是,则可以将其添加为sprintf() 参数并构建类,如下面的示例所示。请记住,检查您是否实际获得了值,如果没有,请设置默认值。

add_filter( \'body_class\', function ( $wp, $extra )
{
    return array_merge( $wp, (array) $extra, array(
        sprintf(
            \'color%s\',
            "" !== get_field( \'membertype_id\' )
                ? get_field( \'membertype_id\' )
                : "1" // default
        ),
        # additional declarations here
    ) );
}, 20, 2 );
这只是一个示例,您在制定解决方案时肯定会更加老练。请尽量不要将其与实际值或字段名绑定得太过紧密,因为这样的依赖关系很快就会成为维护的噩梦。

还要记住,我使用get_field() 来自“AdvancedCustomFields”插件,因为这是最初添加到问题中的标记。在真实的WordPress中get_post_meta()get_post_custom() 或类似的(取决于您要检索的内容)。

SO网友:codearachnid

由于您是根据其他地方设置的值指定类,因此您可能在其他文件中设置了此变量,而不是header.php 您可能存在范围界定问题。我推荐你的功能。php文件创建变量的全局范围:global $mem_id; 然后确保将全局作用域内部化到修改或使用该值的每个文件中。

乍一看,你似乎正在努力实现插件中可能已经存在的目标http://wordpress.org/plugins/custom-classes/ (不用担心,它已经有一段时间没有更新了,但对于当前版本的WordPress来说,逻辑工作得很好)。我只是想看看。

结束

相关推荐

WordPress 3.8.3。自定义主题-滑块不会加载js/css文件

我正在构建自定义WP主题,但我对滑块有问题。我尝试安装的那些都不起作用。当我查看开发人员控制台并搜索他们的js/css文件时,发现他们不在那里。不在页眉或页脚中。其中一个插件可以选择将自己的文件包含在页眉或页脚中,试图改变这一点,但没有成功。Contact form和pagenavi工作正常,但滑块工作不正常。没有js错误,因为没有导致这些错误的文件。WP版本为3.8.3。包括jQuery 1.9.3,运行良好。我的功能中是否遗漏了什么。php(主题从无到有)可能吗?