新しいWordPressテーマデザイナーとして、CSSファイルを整理、拡張、読みやすく保ちながら、長いCSSファイルの管理の課題にすぐに気づくでしょう。
WPBeginnerのメンバーを含む多くのデザイナーやフロントエンド開発者は、作業を容易にするためにSassやLESSのようなCSSプリプロセッサ言語の使用を推奨しています。しかし、これらのプリプロセッサとは何でしょうか?そして、それらをどのように使い始めるのでしょうか?
この記事は、新しいWordPressテーマデザイナー向けのSassの入門です。CSSプリプロセッサとは何か、なぜそれが必要なのか、そしてそれらをインストールしてすぐに使い始める方法を説明します。

Sass(Syntactically Awesome Stylesheet)とは何ですか?
私たちが使用するCSSは、使いやすいスタイルシート言語として設計されました。しかし、ウェブは進化しており、デザイナーはより少ない労力と時間でより多くのことを可能にするスタイルシート言語を必要としています。
SassのようなCSSプリプロセッサ言語を使用すると、変数、基本的な算術演算子、ネスト、ミックスインなど、現在CSSで利用できない機能を使用できます。
これは PHP に非常に似ており、サーバー上でスクリプトを実行して HTML 出力を生成するプリプロセッサ言語です。同様に、Sass は .scss ファイルを前処理して、ブラウザで使用できる CSS ファイルを生成します。
WordPressの管理画面のスタイルは、バージョン3.8以降、Sassを利用するようにポートされました。すでに多くのWordPressテーマショップや開発者がSassを利用して開発プロセスをスピードアップしています。
WordPressテーマ開発のためのSass入門
ほとんどのテーマデザイナーは、テーマをステージング環境やライブサーバーにデプロイする前に、ローカル開発環境で作業します。Sassはプリプロセッサ言語なので、ローカル開発環境にインストールする必要があります。
まず、Sassをインストールする必要があります。コマンドラインツールとして使用できますが、Sass用の便利なGUIアプリもいくつかあります。Mac、Windows、Linuxで利用できる無料のオープンソースアプリであるKoalaの使用をお勧めします。

この記事のためには、空のテーマを作成する必要があります。単に/wp-content/themes/内に新しいフォルダを作成してください。名前は「mytheme」など、好きなものにできます。空のテーマフォルダ内に、さらにフォルダを作成し、stylesheets と名付けてください。
スタイルシートフォルダに、メモ帳のようなテキストエディタを使用してstyle.scssファイルを作成する必要があります。
次に Koala を開き、プラスアイコンをクリックして新しいプロジェクトを追加する必要があります。次に、テーマディレクトリを見つけてプロジェクトとして追加します。Koala が stylesheets ディレクトリ内の Sass ファイルを自動的に見つけて表示することがわかります。

Sassファイルで右クリックし、出力パスの設定オプションを選択します。次に、テーマディレクトリのルート(例:/wp-content/themes/mytheme/)を選択し、Enterキーを押します。Koalaは、テーマディレクトリにCSS出力ファイルを生成します。
これをテストするには、Notepad のようなテキストエディタで Sass ファイル style.scss を開き、次のコードを追加する必要があります。
$fonts: arial, verdana, sans-serif;
body {
font-family:$fonts;
}
次に、変更を保存してKoalaに戻る必要があります。Sassファイルを右クリックすると、右側にサイドバーがスライドインします。Sassファイルをコンパイルするには、単に‘Compile’ボタンをクリックしてください。
テーマディレクトリにあるstyle.cssファイルを開くと結果を確認できます。以下のような処理済みのCSSが表示されます。
body {
font-family: arial, verdana, sans-serif; }
Sassファイルで変数$fontsを定義したことに注意してください。これで、フォントファミリーを追加する必要があるたびに、すべてのフォントの名前を再度入力する必要がなくなります。$fontsを使用するだけで済みます。
SassがCSSにもたらすその他のスーパーパワーは何ですか?
Sassは信じられないほど強力で、後方互換性があり、学習も非常に簡単です。前述のように、変数、ネスティング、ミックスイン、インポート、パーシャル、数学的および論理演算子などを作成できます。
次に例を示しますので、WordPressテーマで試してみてください。
複数のスタイルシートの管理
WordPressテーマデザイナーとして直面する一般的な問題の1つは、多くのセクションを持つ大きなスタイルシートです。テーマの作業中に、問題を修正するために何度も上下にスクロールすることになるでしょう。
Sassを使用すると、複数のファイルをメインのスタイルシートにインポートし、テーマ用の単一のCSSファイルとして出力できます。
CSSの@importについてはどうですか?
CSSファイルで@importを使用する問題は、@importを追加するたびに、CSSファイルがサーバーに別のHTTPリクエストを行うことです。これはページの読み込み時間に影響し、プロジェクトにとって良くありません。
一方、Sassで@importを使用すると、Sassファイルにファイルをインクルードし、ブラウザ用にすべてを単一のCSSファイルとして提供します。
Sassで@importを使用する方法を学ぶには、まずテーマのstylesheets ディレクトリにreset.scssファイルを作成し、このコードを貼り付ける必要があります。
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
次に、メインのstyle.scssファイルを開き、リセットファイルをインポートしたい場所にこの行を追加する必要があります。
@import 'reset';
ファイル名をすべて入力する必要がないことに注意してください。これをコンパイルするには、Koalaを開き、再度コンパイルボタンをクリックする必要があります。次に、テーマのメインのstyle.cssファイルを開くと、リセットCSSがそこに含まれているのがわかります。
Sassのネスティング
HTMLとは異なり、CSSはネストされた言語ではありません。Sassを使用すると、管理しやすく作業しやすいネストされたファイルを作成できます。たとえば、<article>セクションのすべての要素を、articleセレクタの下にネストできます。
WordPressテーマデザイナーとして、これによりさまざまなセクションで作業し、各要素を簡単にスタイル設定できます。ネスティングを実際に確認するには、style.scssファイルに次を追加してください。
.entry-content {
p {
font-size:12px;
line-height:150%;
}
ul {
line-height:150%;
}
a:link, a:visited, a:active {
text-decoration:none;
color: #ff6633;
}
}
処理後、以下のCSSが出力されます。
.entry-content p {
font-size: 12px;
line-height: 150%; }
.entry-content ul {
line-height: 150%; }
.entry-content a:link, .entry-content a:visited, .entry-content a:active {
text-decoration: none;
color: #ff6633; }
テーマデザイナーとして、ウィジェット、投稿、ナビゲーションメニュー、ヘッダーなどに異なるルックアンドフィールをデザインすることになります。Sassでネストを使用すると、構造化され、同じクラス、セレクタ、識別子を何度も記述する必要がなくなります。
SassでMixinを使用する
スタイルルールは同じでも、異なるセレクターやクラスで使用するため、プロジェクト全体で一部のCSSを再利用する必要がある場合があります。ここでミックスインが役立ちます。style.scssファイルにミックスインを追加しましょう:
@mixin hide-text{
overflow:hidden;
text-indent:-9000px;
display:block;
}
このミックスインは、基本的に一部のテキストが表示されないようにします。ロゴのテキストを非表示にするためにこのミックスインを使用する方法の例を次に示します。
.logo{
background: url("logo.png");
height:100px;
width:200px;
@include hide-text;
}
ミキシンを追加するには @include を使用する必要があることに注意してください。処理後、以下のCSSが生成されます。
.logo {
background: url("logo.png");
height: 100px;
width: 200px;
overflow: hidden;
text-indent: -9000px;
display: block; }
Mixinは、ベンダープレフィックスにも非常に役立ちます。不透明度値や境界線の半径を追加する場合、Mixinを使用すると多くの時間を節約できます。境界線の半径を追加するためのMixinを追加したこの例を見てください。
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
-o-border-radius: $radius;
border-radius: $radius;
}
.largebutton { @include border-radius(10px); }
.smallbutton { @include border-radius(5px); }
コンパイル後、以下のCSSが生成されます:
.largebutton {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
-o-border-radius: 10px;
border-radius: 10px; }
.smallbutton {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
-ms-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px; }
追加リソース
この記事がWordPressテーマ開発のためのSassについて学ぶのに役立ったことを願っています。多くのWordPressテーマデザイナーがすでにそれを使用しています。将来的にはすべてのCSSがプリプロセスされるようになり、WordPressテーマ開発者はゲームをレベルアップする必要があるとさえ言う人もいます。また、テーマデザイナーのためのWordPress body classのヒントに関するガイドや、最高のドラッグアンドドロップWordPressページビルダーのエキスパートによる厳選リストもご覧ください。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。


デニス・ムトミ
WordPressテーマデザイナー向けのSassガイドをありがとうございます。初心者なので、ネストのセクションが非常に役立ちました。コードがこんなにきれいで整理できるなんて、誰が知っていたでしょうか?
自分のプロジェクトでSassを試してみて、テーマのさまざまな部分(ヘッダー、フッター、サイドバー)にパーシャルを使用することで、ワークフローが本当に効率化されたことに気づきました。
これにより、CSSをさらに簡素化するためにミックスインを深く学ぶ意欲が湧きました。
ちなみに素晴らしいリソースです
ダポ・オ
これ、ありがとうございます。
カスタムブロックテーマを作成しており、クラシックテーマと同じ方法で SASS を使用できるかどうか疑問に思っています。
WPBeginnerサポート
ブロックテーマでCSSを追加する方法とクラシックテーマでCSSを追加する方法には、いくつかの違いがあります。
管理者
マーク
素晴らしいチュートリアルです。SASSとKoalaを使用してWordPressの子テーマを作成するにはどうすればよいですか?それは非常に役立つチュートリアルになるでしょう…
WPBeginnerサポート
現時点ではそのためのガイドはありませんが、記事の可能性について検討させていただきます。
管理者
パウロ・ジェズス
WordPressのテーマをBootstrapとSassで開発しています。SassフォルダはSMACSSアプローチで設定しており、Sassフォルダのルートにはstyle.scssファイルがあります。このファイルですべてのセクションのSCSSファイルをインポートしています(例:_footer.scss, _header.scssなど)。そして、テーマのルートにあるstyle.cssファイルに出力しています。問題は、これらの.scssファイルの一部でBootstrapのクラスをextendしていることです。Sassフォルダに_bootstrap.scssを含めてstyle.scssファイルでインポートするとすべて正常に動作しますが、Bootstrap全体もstyle.cssにコンパイルされてしまい、非常に煩雑になります。理想的には、BootstrapのCSSをテーマのスタイルとは別に、style.cssの一部としてではなく、分離したいと考えています。しかし、style.scssでインポートせずにfunctions.phpでエンキューすると、extendしたBootstrapクラスが見つからないというエラーが発生し、テーマが壊れてしまいます。この問題の回避策について、何かご意見があれば幸いです。
どうぞよろしくお願いいたします。
シナモン・ベルナール
こんにちは、
これは古い投稿かもしれませんが、まだ新しいので質問があります。Twitter Bootstrap Sass、Font-Awesome SassをUnderscores Wordpressスターターテーマテンプレートに組み込むことについてです。
Sassファイルをすべて独自のディレクトリに組み込み、CSSファイルには別の出力パスを設定し、WordPressのstyle.cssはルートに保持して、CSSフォルダ内のstyle.cssを@importするようにしました。
これらすべてを設定した後、ブートストラップのスタイルが正しく機能していません。リセットファイルがあるためかどうかはわかりません。ブートストラップとフォント・オウサムの@importを一番上に配置し、その後に他のものを配置したことを確認しました。
可能であれば、提供した内容に基づいて、ワークフローの設定方法についてアドバイスをいただけますか?
ありがとうございます!
Rehan
素晴らしいチュートリアルです
ありがとう
リカルド・グティエレス
こんにちは。
「リセット」は正規化よりも優れていますか?
ありがとう!
WPBeginnerサポート
Resetはブラウザのスタイルを解除しますが、normalizeはブラウザ間で一貫したスタイルを使用します。各開発者には独自の好みがあると考えています。私たちはresetと一緒に作業することを好みます。
管理者
ジョシュ・マククラナハン
素晴らしい記事です!
SASSを使用するために、特に本番環境に移行する際に、PHPで様々な拡張機能のためにPEARを追加する必要があるようなセットアップはありますか?
言い換えれば、コンパイルして本番環境に移行した後、何か含める必要があるものはありますか?
ご協力いただきありがとうございます。この記事も参考になりました。
WPBeginnerサポート
いいえ、Joshさん、コンパイル後、通常のCSS出力が生成されます。
管理者