2015-04-27 1 views
0

J'ai une fonction qui a créé un div nommé "content-wrapper". Dans des occasions spéciales que j'ai besoin de classes supplémentaires dans ce div et je l'ai essayé avec cette fonction:Genesis - Comment passer des classes supplémentaires à genesis_markup?

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', 
     )); 

Mais la sortie est

<div class="content-wrappercontent-wrapper-first"> 

Quelqu'un sait-il pourquoi les espaces blancs est supprimé et comment je peux l'ajouter ? J'ai même étendu la fonction à

function content_wrapper($function, $title = '', $args = '') { 

$ args serait un tableau où je peux passer des classes supplémentaires, mais cela ne fonctionne pas correctement. Même genesis_attr-content-wrapper ne fonctionne pas correctement, car il ajoute la classe supplémentaire à chaque wrapper de contenu sur la page.

Est-ce que quelqu'un a une idée?

Merci.

Répondre

2

Il semble que l'espace soit supprimé dans la fonction genesis_parse_attr() dans le fichier markup.php du thème genesis lorsqu'il exécute la classe sanitize_html_class ($ context). Vous avez la bonne idée d'utiliser le filtre genesis_attr-context-wrapper, mais ce contexte est utilisé à d'autres endroits, il sera donc appelé plusieurs fois. Pour que votre cas ne l'ajoute qu'à la classe quand vous le voulez, changez le contexte pour qu'il soit seulement 'content-wrapper-first' et qui crée un filtre appelé genesis_attr-context-wrapper-first. Accrocher à ce filtre et ajouter la classe de wrapper de contexte (et tout autre que vous voulez).

Invoquez genesis_markup comme ceci:

genesis_markup(array(
    'html5' => '<div %s>', 
    'xhtml' => '<div class="content-wrapper content-wrapper-first">', 
    'context' => 'content-wrapper-first', 
)); 

Accrocher ensuite au filtre qui ne sera appelée lorsque genesis_markup a le contexte « -wrapper premier contenu »

add_filter('genesis_attr_content-wrapper-first','myFilterFunction'); 

function myFilterFunction($attributes) { 
    $attributes['class'] = $attributes['class'] . ' ' . 'content-wrapper'; 
    return $attributes; 
} 

Étant donné que le contexte est content-wrapper-first, il sera déjà dans la variable $attributes['class'].