如何在 Wordpress 子主题中编译 SASS? [英] How to Compile SASS in a Wordpress Child Theme?

查看:49
本文介绍了如何在 Wordpress 子主题中编译 SASS?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想弄清楚如何在子主题中编译 SASS,但我不知道我做错了什么.

I am trying to figure out how to compile SASS in a child theme and I can't figure out what I am doing wrong.

我基于jointsWP构建了一个父主题.这是父主题库的文件结构:

I built a parent theme based on jointsWP. Here is the file structure for the library of the parent theme:

然后我建立了一个儿童主题.这是子主题库的文件结构:

Then I built a child theme. Here's the file structure for the library of the child theme:

在我的子主题的根目录中,我有一个带有必要子主题注释的 style.css:

In the root of my child theme, I have a style.css with the necessary child theme comments:

/*
 Theme Name:   UIC
 Theme URI:    http://slamagency.com
 Description:  Child theme of the SLAM! theme for UIC.
 Author:       Megan Carroll
 Template:     slam-theme_v1
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
*/
/* =Theme customization starts here
-------------------------------------------------------------- */

@import url("../slam-theme_v1/css/style.css")

然后在Library > SCSS > style.scss中,我有以下代码:

Then in Library > SCSS > style.scss, I have the following code:

@import "http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700";

//
// IMPORTING STYLES
//

// Load SLAM! Theme parent SCSS.
@import url("../slam-theme_v1/scss/style.scss");

// import mixins
@import "mixins";

// import foundation overrides
@import "settings";

// import child colors
@import "colors";

编辑:澄清一下,当我在 style.scss 中添加一些东西时,它会编译为 style.css.但是,如果我对 _settings.scss 进行任何更改,则什么也不会发生.我正在使用 Foundation,所以我希望能够编辑 _settings.scss 中的 Foundation 变量.我做错了什么?

EDIT: To clarify, when I add something in style.scss, it does compile to style.css. But if I make any changes to _settings.scss, nothing happens. I'm using Foundation, so I'd like to be able to edit the Foundation variables in _settings.scss. What am I doing wrong?

EDIT 2:这是我的子主题配置文件中的代码:

EDIT 2: Here is the code that is in my config file for my child theme:

# 1. Set this to the root of your project when deployed:
http_path = "/"

# 2. probably don't need to touch these
css_dir = "../css"
sass_dir = "./"
images_dir = "../images"
javascripts_dir = "../js"
environment = :development
relative_assets = true


# 3. You can select your preferred output style here (can be overridden via the command line):
output_style = :expanded

# 4. When you are ready to launch your WP theme comment out (3) and uncomment the line below
# output_style = :compressed

# To disable debugging comments that display the original location of your selectors. Uncomment:
# line_comments = false

# don't touch this
preferred_syntax = :scss

EDIT 3:从父主题请求入队代码:

EDIT 3: Requested enqueue code from parent theme:

// loading modernizr and jquery, and reply script
if (!function_exists('slam_scripts_and_styles')) { 
function slam_scripts_and_styles() {
  global $wp_styles; // call global $wp_styles variable to add conditional wrapper around ie stylesheet the WordPress way
  if (!is_admin()) {
    $theme_version = wp_get_theme()->Version;

    // removes WP version of jQuery
    wp_deregister_script('jquery');

    // loads jQuery 2.1.0
    wp_enqueue_script( 'jquery', get_template_directory_uri() . '/bower_components/foundation/js/vendor/jquery.js', array(), '2.1.0', false );

    // modernizr (without media query polyfill)
    wp_enqueue_script( 'modernizr', get_template_directory_uri() . '/bower_components/foundation/js/vendor/modernizr.js', array(), '2.5.3', false );

    // adding Foundation scripts file in the footer
    wp_enqueue_script( 'foundation-js', get_template_directory_uri() . '/bower_components/foundation/js/foundation.min.js', array( 'jquery' ), $theme_version, true );

/*
    // register main stylesheet
    wp_enqueue_style( 'slam-stylesheet', get_template_directory_uri() . '/library/css/style.css', array(), $theme_version, 'all' );
*/

    // register foundation icons
    wp_enqueue_style( 'foundation-icons', get_template_directory_uri() . '/library/css/icons/foundation-icons.css', array(), $theme_version, 'all' );

    // comment reply script for threaded comments
    if ( is_singular() AND comments_open() AND (get_option('thread_comments') == 1)) {
      wp_enqueue_script( 'comment-reply' );
    }

    //adding scripts file in the footer
    wp_enqueue_script( 'slam-js', get_template_directory_uri() . '/library/js/scripts.js', array( 'jquery' ), $theme_version, true );

    /*
    I recommend using a plugin to call jQuery
    using the google cdn. That way it stays cached
    and your site will load faster.
    */
    wp_enqueue_script( 'slam-js' );

  }
}
}

之前在父函数中有这样的:

Earlier in the parent functions there is this:

// enqueue base scripts and styles
add_action('wp_enqueue_scripts', 'slam_scripts_and_styles', 999);

推荐答案

从我们的评论中总结我们的发现 &聊天:

To summarize our findings from our comments & chat:

  • 将整个 sass 目录复制到子主题中.然后,当您编辑变量时,所有内容都会重新编译.
  • 在子主题中,不要从父主题导入样式,因为我们现在正在子主题中重新编译.
  • 由于在这种情况下在加载样式的父主题中有一个 enqueue 语句,我们需要在子主题中将该样式出列.并且您需要设置挂钩的优先级,以便在入队后调用出队(优先级为 999).

代码:

function uic_styles() { 
  wp_dequeue_style( 'slam-stylesheet' ); 
  wp_enqueue_style( 'slam-stylesheet', get_template_directory_uri() . '/library/css/style.css' ); 
  wp_enqueue_style( 'uic-styles', get_stylesheet_directory_uri() . '/library/css/style.css' ); 
} 
add_action( 'wp_enqueue_scripts', 'uic_styles', 1000 );

这篇关于如何在 Wordpress 子主题中编译 SASS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆