Стилизация элементов только на главной странице
Я относительно новичок в WordPress, но уверен, что есть способ сделать то, что мне нужно.
У меня есть контейнер в шаблоне, и на главной странице я хотел бы указать немного другие отступы для этого элемента.
Мой текущий CSS выглядит следующим образом:
#main_content .container {
position: relative;
padding: 120px 0;
}
Я хотел бы уменьшить отступ до 80px, если это главная страница, в остальных случаях оставить как есть.
Это нужно делать внутри шаблона или существуют особые CSS-приемы, специфичные для WordPress, о которых я пока не знаю?
Исходя из моего небольшого опыта, я думаю, что должен иметь возможность определить, является ли страница is_home или что-то подобное, и выбрать специальную таблицу стилей в файле header.php для главной страницы. Предположительно, с использованием !important после изменения padding в CSS.
Можете подсказать направление? Результаты, которые я нахожу через поиск, не совсем то, что я пытаюсь сделать.
Функция WordPress body_class($class) — это удобный динамический способ загрузки стилей и JavaScript для определенного содержимого body. Если ваша тема не поддерживает body class, добавить их очень просто:
- Откройте файл
header.php(или шаблон, содержащий тег<body>) - Отредактируйте тег
<body>, изменив его на<body <?php body_class(); ?>>— готово! :)
Теперь, когда вы находитесь на:
- Главной странице (
Home), ваш тег body будет отображаться как<body class="blog"> - Главной странице сайта (
Front Page), ваш тег body будет отображаться как<body class="home"> - Странице отдельной записи блога (
single.php), ваш тег body будет отображаться как<body class="single"> - Странице отдельной страницы (
page.php), ваш тег body будет отображаться как<body class="page">
Теперь у вас есть полная свобода стилизации. Для внешней таблицы стилей, например, для главной страницы, ваш стиль может выглядеть так (как уже упомянул @saifur):
body.home #main_content .container {
position: relative;
padding: 120px 0;
}
Внутренний CSS
Для внутреннего CSS в WordPress есть условные проверки, такие как is_home() и is_front_page(). С их помощью можно определить, находитесь ли вы на главной странице блога или главной странице сайта, и затем загрузить внутренний CSS-код:
<?php if( is_home() || is_front_page() ) : ?>
<style id="my-internal-css">
#main_content .container {
position: relative;
padding: 120px 0;
}
</style>
<?php endif; ?>
Аналогично работают функции is_single(), is_page(), is_category(), is_archive(), is_day() и другие.
Если вы находитесь на странице Home, ваш тег body будет отображаться как <body class="blog"> вместо home, а на Front Page <body class="home"> вместо front-page:
https://core.trac.wordpress.org/browser/tags/4.9.2/src/wp-includes/post-template.php#L570
rafawhs
@mayeenul Islam, я применил некоторые CSS-стили к классу ".page" для внутренних страниц. Но моя главная страница имеет оба класса ".home" и ".page". Как мне это обработать?
Sopo