如何输出Wordpress主题定制器更改为.less文件?

时间:2015-06-26 10:34:02

标签: wordpress twitter-bootstrap-3 less lessphp

我尝试使用bootstrap 3来构建wordpress主题。 我设法通过输出css到主题标题,经典的方式来设置wordpress自定义程序选项以进行颜色更改,但我想知道是否有办法将这些选项输出到.less文件并使用类似lessphp的东西编译style.css编译器,我设法集成到主题中,当我手动更新较少的文件时似乎可以工作。

现在我通过将此函数放入functions.php来输出css:

<?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; 哪个颜色十六进制代码将被定制器输出中的变量替换?

编辑: 这是来自functions.php的函数,我将其用于将lessphp集成到wordpress中:

    //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');
}

有没有办法将定制器创建的变量传递给lessphp并将它们输出到名为wp-customizer.less的文件中?

0 个答案:

没有答案