2014-09-11 2 views
2

Я изменяю тему Wordpress и хочу добавить настраиваемое поле для добавления цветовых кодов в css. (Обратите внимание, что я использую Advanced пользовательских полей)Использование метаданных в пользовательских css

В настоящее время я создал custom.php

<?php 

header("Content-type: text/css"); 
$color = get_field('color_code'); 

?> 

.container { 
    background: <?php echo $color; ?>; 
} 

, который загружается в шаблоне следующим образом:

<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri() ; ?>/css/custom.php"> 

Проблема заключается в том, что custom.php не может использовать get_field(), и я считаю, что это связано с тем, что он не имеет отношения к текущей странице.

Кто-нибудь знает способ использования этих настраиваемых полей для инъекции в CSS?

BR/Хенрик

+0

[Настройки API] (http://codex.wordpress.org/Settings_API) является то, что вы» ищу. –

+0

Извините, мне нужно управлять на странице. Не только одна настройка. – Henric

+0

Вы хотите, чтобы у вас была настройка 'color_code' для каждой страницы? –

ответ

1

Если вы уже enqueuing таблицы стилей, вы можете использовать wp_add_inline_style(), и это добавит стили только после стиля в очереди. В functions.php:

add_action('wp_enqueue_scripts', function(){ 
    wp_enqueue_style('custom', get_stylesheet_directory_uri() . '/my-style.css'); 
    $color = get_field('color_code'); 
    if($color) { 
     $custom_css = ".singular .entry-title{ color: $color; }"; 
     wp_add_inline_style('custom', $custom_css); 
    } 
}, 11); 

И my-style.css:

.singular .entry-title { 
    color:#998F56; 
} 

распечаток это, если сообщение содержит поле color_code набор:


html output


Другим вариантом является печать его вручную, используя wp_head, который печатает его непосредственно перед </head> тегом:

add_action('wp_head', function(){ 
    $color = get_field('title_color'); 
    if($color) { 
     echo "<style>.singular .entry-title{ color: $color; }</style>"; 
    } 
}, 11); 
Смежные вопросы