我有一个创建名为“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也无法正常工作,因为它会为页面上的每个内容包装器添加额外的类。
有人有想法吗?
感谢。
答案 0 :(得分:2)
在运行sanitize_html_class($ context)时,在genesis主题的markup.php文件中,函数genesis_parse_attr()中的空格被删除了。你有正确的想法使用genesis_attr-context-wrapper过滤器,但是这个上下文在其他地方使用,所以它会被多次调用。对于您的情况,只需要在需要时添加该类,将上下文更改为仅包含内容包装优先级的内容。并创建一个名为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具有上下文&#39; content-wrapper-first&#39;
时才会被调用add_filter('genesis_attr_content-wrapper-first','myFilterFunction');
function myFilterFunction($attributes) {
$attributes['class'] = $attributes['class'] . ' ' . 'content-wrapper';
return $attributes;
}
由于上下文是content-wrapper-first,它已经在$attributes['class']
变量中。