У меня есть функция, которая создала 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 не работает должным образом, так как он добавляет дополнительный класс к каждой обертке содержимого на странице.
У кого-нибудь есть идея?
Благодарю.
Похоже, что пробел удаляется в функции 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']
переменная.
Других решений пока нет …