Genesis — Как передать дополнительные классы в genesis_markup?

У меня есть функция, которая создала div с именем «content-wrapper». В особых случаях мне нужны дополнительные классы в этом 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

Решение

Похоже, что пробел удаляется в функции genesis_parse_attr () в файле markup.php темы genesis при запуске sanitize_html_class ($ context). У вас есть правильная идея использовать фильтр genesis_attr-context-wrapper, но этот контекст используется в других местах, поэтому он будет вызываться много раз. Для вашего случая, чтобы он добавлял класс только тогда, когда вы этого хотите, измените контекст на «content-wrapper-first» и создайте фильтр с именем genesis_attr-context-wrapper-first. Подключитесь к этому фильтру и добавьте класс context-wrapper (и любой другой, какой захотите).

Так что назовите 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'] переменная.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector