wordpressor
  • 0
Эксперт

Как вы изменяете файлы CSS через панель администратора?

  • 0

Все стили темы находятся в файле 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, так как же люди динамически изменяют свои таблицы стилей?

Share
  1. Если вы хотите, чтобы стили были динамическими, вам придется создать файл CSS, как вы предлагаете. Однако, поскольку WordPress часто использует styles.css в качестве файла определения темы, переименование styles.php может вызвать проблемы.

    Возможно, было бы лучше собрать все «динамические» определения в отдельный файл (например, dynamic-styles.php) и импортировать их из основного файла style.css через @import(url),

    • 0
  2. Что я лично сделал бы, так это просто добавил дополнительный CSS в голову всякий раз, когда установлен параметр темы для стиля.

    Все темы (или хорошо закодированные) помещают свою таблицу стилей перед wp_head, что означает, что мы можем надежно (полу) подключить и добавить некоторые дополнительные стили, которые переопределяют естественный стиль темы (по умолчанию).

    // Get the option once
    $css_option = get_option( 'your_option' );
    
    // Add action when there's a non-empty value
    if( !empty( $css_option ) )
        add_action( 'wp_print_styles', 'custom_css_stuff' );
    
    function custom_css_stuff() {
        // Bring the data into the scope of the callback function
        global $css_option;
        ?>
    <style type="text/css">
    body { background-color: <?php echo $css_option; ?>; }
    </style>
        <?php
    }
    

    Это выводит css после таблицы стилей темы, что позволит CSS переопределить все, что было установлено таблицей стилей.

    Действие добавляется только тогда, когда параметр не пуст, get_option также будет возвращаться пустая строка, когда параметр не существует, поэтому это охватывает как не установленное (пустое значение), так и не существующее значение параметра.

    • 0

Оставить ответ

You must login to add an answer.