Использование фильтров для добавления класса в контейнер шаблона

Итак, я не очень силен в php и java, я учусь. Сейчас я работаю с Genesis, используя эпик, если это имеет значение. Неудача, но попытка написать фильтр для добавления класса к определенному div в шаблоне в functions.php

Я расширил свой сайт, но я не хочу, чтобы весь раздел «Блог» (главная страница блога, категории и отдельный пост) был настолько широким, чтобы я мог использовать нативное программирование, а также научиться писать этот материал.

сейчас я контролирую ширину с помощью моей таблицы стилей

    .page-id-89 .site-inner .wrap {
padding: 0 5% 0;
}

Как я могу написать это как фильтр и подключить его к «.site-inner .wrap» в вышеупомянутых разделах сайта?

так что в основном функция ищет «.site-inner .wrap» и добавляет класс (скажем .squeeze) с моим заполнением к ним для этих типов записей

Я ценю любую помощь, поскольку я изучаю мой путь через это! Хороших выходных

0

Решение

Работа, вероятно, уже сделана для вас. Если ваша тема зовет body_class правильно, тогда ваш элемент тела уже должен иметь классы, установленные для текущего шаблона. Например, вот класс тела домашней страницы сайта WordPress:

home page page-id-8 page-template

На теле класс одного поста

single single-post postid-5418 single-format-standard

Если вы используете пользовательский шаблон страницы, также будет класс, специфичный для этого шаблона, обычно в форме my-custom-template-php

Если все страницы, которые вы хотите расширить, или наоборот, те, которые вы не хотите расширять, имеют определенный класс тела, вы можете использовать этот класс в селекторе CSS. Например, этот селектор будет применяться только к домашней странице:

.home .site-inner .wrap

Если вы не можете выделить шаблоны, которые хотите расширить, вы можете отфильтровать body_class используйте и используйте условные теги для добавления нужного класса:

add_filter('body_class', function($classes) {
if( is_home() ) {
$classes[] = 'wide';
}
return $classes;
});

Приведенный выше пример добавит класс wide к элементу тела на домашней странице.

1

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

Вот полезные руководства по крючкам и фильтрам в Бытие братан.

http://genesistutorials.com/visual-hook-guide/

https://wordpress.org/plugins/genesis-visual-hook-guide/

https://alexanderdejong.com/genesis/changing-adding-custom-classes-html-5/

add_filter( 'genesis_attr_content-sidebar-wrap', 'custom_add_css_attr' );

function custom_add_css_attr( $attributes ) {
if ( is_page_template( 'page_blog.php' ) ) {
$attributes['class'] .= ' squeeze';
}
return $attributes;
}

Вы можете использовать .site-inner .wrap .content-sidebar-wrap вместо .site-inner .wrap, Я думаю .site-inner .wrap объявляется в общем, поэтому мы не можем добавлять классы в конкретный раздел.

Надеюсь, это поможет.

0

По вопросам рекламы [email protected]