Все стили темы находятся в файле style.css.
Допустим, первая строка выглядит так:
body {
background-color: #fff;
}
Теперь я создал опцию в панели администратора с именем body_bg. Пользователь вводит там #000, и я хочу, чтобы значение в style.css изменилось.
Как мне этого добиться?
Самый простой способ для меня выглядит так: мне нужно переименовать style.css в.php и просто сделать:
<?php header("Content-type: text/css"); ?>
body {
background-color: <?php echo get_option('body_bg');?> ;
}
А затем просто свяжите style.php с пустым файлом style.css. Это совершенно правильно и работает, но я никогда не видел темы с файлом style.php, так как же люди динамически изменяют свои таблицы стилей?
Если вы хотите, чтобы стили были динамическими, вам придется создать файл CSS, как вы предлагаете. Однако, поскольку WordPress часто использует styles.css в качестве файла определения темы, переименование styles.php может вызвать проблемы.
Возможно, было бы лучше собрать все «динамические» определения в отдельный файл (например, dynamic-styles.php) и импортировать их из основного файла style.css через
@import(url)
,вау! Второй абзац. Это именно то, что я делаю, но другой подход. Великолепно! !important должен сделать это. Спасибо ану!
@Wordpressor По возможности
!important
следует избегать.True — в идеале вы должны использовать специфичность, чтобы убедиться, что пользовательский CSS имеет приоритет. Механизм @ t31os ниже также позволяет избежать этого, поскольку обычно вы будете вставлять «динамические» стили после связанного CSS, поэтому он будет иметь приоритет
Так делают многие темы (я думаю). Во мне есть что-то, что любит как можно полнее отделять стиль от основного кода сайта. Наверное, бессмысленное различие!
Что я лично сделал бы, так это просто добавил дополнительный CSS в голову всякий раз, когда установлен параметр темы для стиля.
Все темы (или хорошо закодированные) помещают свою таблицу стилей перед
wp_head
, что означает, что мы можем надежно (полу) подключить и добавить некоторые дополнительные стили, которые переопределяют естественный стиль темы (по умолчанию).Это выводит css после таблицы стилей темы, что позволит CSS переопределить все, что было установлено таблицей стилей.
Действие добавляется только тогда, когда параметр не пуст,
get_option
также будет возвращаться пустая строка, когда параметр не существует, поэтому это охватывает как не установленное (пустое значение), так и не существующее значение параметра.