Доступ к глобальной переменной в CSS (style.php)

Я делаю CSS-файл style.php, поэтому я могу использовать некоторые динамические переменные в CSS в рамках установки Wordpress:

<?php header("Content-type: text/css"); ?>

и так далее.

Как я могу получить доступ к глобальной переменной из файла style.php или передать ему переменную?

Код, который я пытаюсь заставить работать в CSS, похож на

$maincolor = $cap->br_main_color;

Также:

  • Не обращайте внимания на проблему кэширования. Это всего лишь личный проект.
  • Передача переменной в ссылке на таблицу стилей слишком сложна для этого (на мой взгляд).

РЕДАКТИРОВАТЬ: В качестве небольшого пояснения: я создаю целую тему на основе нескольких цветов и вычисляю оттенки для эффектов наведения и т. Д. Примерно 50% стилей содержат в себе PHP. Все работает просто отлично, если я вручную ввожу цвета в style.php, но я пытаюсь сделать это еще проще для менее технически подкованных людей и использую палитру цветов.


person Anders H    schedule 26.09.2010    source источник
comment
Цитата вокруг «CSS» подразумевает сарказм? :-)   -  person Jonathan Sterling    schedule 26.09.2010
comment
В принципе. Тип контента — CSS, поэтому я не чувствовал, что получу хороший ответ: «Как мне получить доступ к глобальной переменной в PHP?» Меня, вероятно, просто выгнали бы из StackOverflow.   -  person Anders H    schedule 28.09.2010
comment
Отличный вопрос и ответ, спасибо! Я делаю то же самое.   -  person And Finally    schedule 08.04.2012


Ответы (2)


Чтобы получить доступ к функциям WordPress, вам нужно добавить следующие строки в файл style.php.

define('WP_USE_THEMES', false);
require('./wp-blog-header.php');

Первая строка говорит WordPress не запускать процессы, связанные с темой, а вторая строка запускает движок WordPress. После этого у вас есть доступ к функциям WordPress и глобальным переменным.

person Nithesh Chandra    schedule 26.09.2010
comment
Ба! Кажется, это решение не работает в последних версиях WordPress. См. wordpress.org/support/topic/re-opened. - person And Finally; 08.04.2012

Вот альтернативное решение для встраивания php в таблицу стилей Wordpress .css (в полезности я не уверен), которое не требует манипулирования ядром Wordpress.

Просто создайте встроенный css-файл php в каталоге вашей темы, содержащий обычный код:


встроенный_стиль.php

/* define document as css*/
<?php header("Content-type: text/css"); ?>

/* Example php variable declaration and function call */
<?php $body_color = get_color(); ?>

/* Begin php embedded css code below here */
body {
    background: none;
    color: <?php echo $body_color ?>;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 10pt
}

Затем импортируйте этот динамический файл в свою тему style.css, чтобы вам не пришлось изменять ядро ​​Wordpress.


стиль.css

/*  
Theme Name: Mytheme
Version: 1.0
Description: This theme has php embedded css
Author: You
*/
@import url(embedded_style.php);
/* Normal CSS below as required */

мои 2 цента

Генезис этого фрагмента был попыткой разрешить различные имена каталогов при импорте css из родительской темы в мою дочернюю тему. Мне не понравилась идея изменения основных файлов WordPress, однако, поскольку большинство функций/хуков не определены во время выполнения style.css, чтобы прервать вызов, необходимо было найти альтернативный метод. В конце концов, я не использовал это по тем же причинам, по которым не мог прервать вызов файла (слишком рано использовать удобные константы WordPress и т. д.), однако, надеюсь, это пригодится кому-то еще.

person tonyest    schedule 07.04.2011