我正在尝试少用 bootstrap 3 构建一个 wordpress 主题。我设法通过将css输出到主题标题中来设置用于颜色更改的wordpress定制器选项,这是经典的方式,但我想知道是否有办法将这些选项输出到.less文件中并用类似lessphp的东西编译style.css编译器,我设法将其集成到主题中,并且在我手动更新较少文件时似乎可以工作。
现在我通过将此函数放入functions.php中将css输出到head中:
<?php
//change colors
function le_libertaire_register_theme_customizer($wp_customize) {
$colors = array();
$colors[] = array(
'slug' => 'header_text_color',
'default' => '#fff',
'label' => __('Header Text Color', 'Le-libertaire')
);
$colors[] = array(
'slug' => 'navbar_bg_color',
'default' => '#dc3023',
'label' => __('Navbar BG Color', 'Le-libertaire')
);
foreach( $colors as $color ) {
// SETTINGS
$wp_customize->add_setting(
$color['slug'], array(
'default' => $color['default'],
'type' => 'option',
'capability' =>
'edit_theme_options'
)
);
// CONTROLS
$wp_customize->add_control(
new WP_Customize_Color_Control(
$wp_customize,
$color['slug'],
array('label' => $color['label'],
'section' => 'colors',
'settings' => $color['slug'])
)
);
}
}
add_action('customize_register', 'le_libertaire_register_theme_customizer');
?>
并将这段代码放入我的 header.php 中:
<?php
$navbar_bg_color = get_option('navbar_bg_color');
$header_text_color = get_option('header_text_color');
?>
<style>
.navbar{background: <?php echo $navbar_bg_color ?> !important; }
.navbar-brand, .navbar-nav a{color: <?php echo $header_text_color ?> !important;}
</style>
谁能告诉我是否有办法将这些变量输出到,比如说 wp-customizer.less 文件,该文件将通过 @import 包含到 bootstrap.less 中,以便 wp-customizer.less 中的输出代码格式如下
@brand-primary:#dc3023;@品牌成功:#fff;哪里颜色十六进制代码将被定制器输出中的变量替换?
编辑:这是我用来将lessphp集成到wordpress中的functions.php中的函数:
//compile less
function autoCompileLess() {
// include lessc.inc
require_once( get_template_directory().'/less/lessc.inc.php' );
// input and output location
$inputFile = get_template_directory().'/less/bootstrap.less';
$outputFile = get_template_directory().'/style.css';
// load the cache
$cacheFile = $inputFile.".cache";
if (file_exists($cacheFile)) {
$cache = unserialize(file_get_contents($cacheFile));
} else {
$cache = $inputFile;
}
$less = new lessc;
// create a new cache object, and compile
$newCache = $less->cachedCompile($cache);
// output a LESS file, and cache file only if it has been modified since last compile
if (!is_array($cache) || $newCache["updated"] > $cache["updated"]) {
file_put_contents($cacheFile, serialize($newCache));
file_put_contents($outputFile, $newCache['compiled']);
}
}
if(is_admin()) {
add_action('init', 'autoCompileLess');
}
有没有办法将customizer创建的变量传递给lessphp并将它们输出到名为wp-customizer.less的文件中?