我有一个创建名为"content-wrapper“的div的函数。在特殊情况下,我需要在这个div中添加额外的类,我尝试使用这个函数:
function content_wrapper($function, $title = '', $first = false ) {
if ('open' != $function && 'close' != $function)
return;
if ('open' == $function) {
if ($first == true) {
genesis_markup( array(
'html5' => '<div %s>',
'xhtml' => '<div class="content-wrapper content-wrapper-first">',
'context' => 'content-wrapper content-wrapper-first',
) );但是输出结果是
<div class="content-wrappercontent-wrapper-first">有没有人知道为什么要删除空格以及如何添加空格?我甚至将函数扩展为
function content_wrapper($function, $title = '', $args = '' ) {$args将是一个数组,我可以在其中传递额外的类,但这不能正常工作。甚至genesis_attr-content-wrapper也不能正常工作,因为它向页面上的每个内容包装器添加了额外的类。
有没有人有主意?
谢谢。
发布于 2015-05-06 21:58:50
看起来在genesis主题的markup.php文件中的函数genesis_parse_attr()中的空格在运行sanitize_html_class($context)时被删除了。您对使用genesis_attr- context -wrapper过滤器的想法是正确的,但此上下文在其他地方使用,因此它将被多次调用。对于仅在需要时才添加类的情况,将上下文更改为“content-wrapper-first”,这将创建一个名为genesis_attr- context -wrapper-first的过滤器。连接到这个过滤器并添加上下文包装器类(以及您想要的任何其他类)。
所以像这样调用genesis_markup:
genesis_markup( array(
'html5' => '<div %s>',
'xhtml' => '<div class="content-wrapper content-wrapper-first">',
'context' => 'content-wrapper-first',
) );然后挂钩到过滤器,只有当genesis_markup具有上下文“content-wrapper-first”时才会调用该过滤器
add_filter('genesis_attr_content-wrapper-first','myFilterFunction');
function myFilterFunction($attributes) {
$attributes['class'] = $attributes['class'] . ' ' . 'content-wrapper';
return $attributes;
}因为上下文是内容包装器优先的,所以它已经在$attributes['class']变量中了。
https://stackoverflow.com/questions/29900654
复制相似问题