1

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

有人有想法吗?

谢谢。

4

1 回答 1

3

当它运行 sanitize_html_class($context) 时,看起来在 genesis 主题的 markup.php 文件中的函数 genesis_parse_attr() 中删除了空格。您有使用 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;
}

由于上下文是 content-wrapper-first,它已经在$attributes['class']变量中。

于 2015-05-06T13:58:49.653 回答