Genesis - 如何将其他类传递给genesis_markup?

时间:2015-04-27 16:02:27

标签: php genesis

我有一个创建名为“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也无法正常工作,因为它会为页面上的每个内容包装器添加额外的类。

有人有想法吗?

感谢。

1 个答案:

答案 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']变量中。