WordPress как на ладони
rgbcode is looking for WordPress developers. eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Как добавить класс к тэгу body с помощью php?

Как сделать так, что бы при входе на сайт (сделан на wordpress) с выбором определенной роли (подписчик, автор) к тэгу body добавлялся класс со значением роли.

Например, если зайти на сайт, выбрав роль подписчика, то к тэгу body добавлялся класс subscriber?

2
Гость
8.5 лет назад
  • 0
    Kama9751

    Для этого нужно убедиться, что в шаблоне используется функция body_class().

    Для этого в HTML странице посмотрите, если там к BODY добавляются классы то все ОК, увидите примерно такое:

    <body class="page page-id-2 page-template page-template-default logged-in">

    Если все работает. То классы можно добавлять через фильтр body_class. Такой код добавь в functions.php:

    // добавим роли текущего пользователя в классы body
    add_filter('body_class', function( $classes ){
    	if( is_user_logged_in() )
    		$classes[] = implode(' ', wp_get_current_user()->roles );
    	return $classes;
    } );

    Еще пример для наглядности:

    Классы можно добавить с применением условий. Добавим класс только для постоянных страниц: is_page().

    add_filter('body_class','my_class_names');
    function my_class_names( $classes ) {
    	// добавим класс 'it__is__page' в массив классов $classes
    	if( is_page() )
    		$classes[] = 'it__is__page';
    
    	return $classes;
    }

    Это только демонстрация: для у записей выводятся из типы и класс страницы уже в классах есть...

    Список условий который можно использовать смотрите в Условных тегах. Ну, вообще там можно использовать и другие условия, но это хороший список для начала...

    firuz 8.5 лет назад

    Большое спасибо, Вы не представляете как меня выручили!!!

    Комментировать
  • 0

    А как можно задать свой класс из php шаблона страницы?

    Kama 7.5 лет назад

    Используй фильтр описанный выше в этом шаблоне страницы, перед вызовом get_header().

    Или можешь в functions.php использовать фильтр описанный выше, в нем создать условия для определения твоего шаблона станицы с помощью is_page_template()

    avense 7.5 лет назад

    В том то и дело что использую фильтр перед вызовом get_header() в шаблоне, но класс не добавляется...

    Мне надо именно из php шаблона страницы добавить класс, так как проект большой и добавлять свои коды в functions.php под разные страницы не желательно и не так удобно как в сам файл шаблона страницы, лучше все прописать в файл шаблона для конкретной страницы.

    avense 7.5 лет назад

    Поправочка... в прошлый раз пробовал класс не добавлялся, сейчас пробую и уже добавляется.. возможно где то, что то пропустил или что то препятствовало выводу класса.
    Благодарю за помощь!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация