Проблема с get_option Wordpress функция вызывается в настраиваемой таблице стилей - PullRequest
0 голосов
/ 05 августа 2011

Я занимаюсь разработкой темы Wordpress, и хочу, чтобы администраторы могли изменять цвета темы.Вот почему я решил использовать таблицу стилей "style.php", которая генерируется во время выполнения со следующим кодом:

<?php 
    header("Content-type: text/css");
    $options = get_option( "option_group" );
?>

body {
    background-color: <?php echo $options["body-color"]; ?>
}

/* The rest of the css goes here......... */

, и я включил этот файл в раздел заголовка, как обычную таблицу стилей.Проблема в том, что в этом файле появляется ошибка " Вызов неопределенной функции get_option () ".Мне интересно, как я могу заставить это работать.В любом другом файле, где я вызываю get_option (), он работает совершенно нормально.Я был бы рад, если вы можете дать мне какое-либо предложение или обойти.

Хорошего дня:)

1 Ответ

2 голосов
/ 05 августа 2011

Если таблица стилей включена в тег <link> в header.php, например, ...

<link href="http://YOURSERVER/wp-content/themes/YOURTHEME/style.php" media="all" type="text/css" rel="stylesheet">

тогда скрипт style.php не будет иметь доступа к WordPress, если вы не загрузите WordPress вверху скрипта. Это будет сложно и ресурсоемко (вы будете загружать WP дважды для каждой загрузки страницы.)

Вероятно, лучший, более эффективный способ сделать это - внедрить пользовательские стили непосредственно в <head> документа следующим образом:

<head>
...
<style>
body {
     background-color: #CCC;
}
</style>
</head>

Для этого ваша тема может использовать хук действия wp_head ...

add_action("wp_head", "my_print_custom_style");
function my_print_custom_style(){
    //look up the option
    //echo out the <style> tag and css
}

EDIT ---- Я сделал это сложнее, чем нужно. Поскольку вы кодируете тему, а не плагин, вы можете вывести тег <style> непосредственно в header.php, а не возиться с ловушкой действия wp_head.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...