シンプルなコードでHTMLを生成できるテンプレートエンジン「Jade」を導入して、快適なHTMLコーディングが実現しました。

Jade – Template Engine
http://jade-lang.com

そこで、

WordPressのテンプレートもJadeで書けないか?

WordPressの実装はHTMLとPHPが混ざり、書きにくい&可読性が悪いテンプレートになってしまいがちです。
Jadeの中にサクっとPHPを記述できる方法はないかと探したところ、
Jade-PHPというコンパイラを使用して、ものすごくシンプルなテンプレートが公開されていました。

wordpress-jade-template
https://github.com/ajschlosser/wordpress-jade-template

行の先頭にハイフンを付けるだけで、<?php ?>の記述が不要に

もともとJadeには、行頭に「-」をつけることで、HTMLに出力されないJavascriptを書くことができましたが、Jade-PHPではこの機能がPHPの出力に変更されているようです。

例:

single.phpをJadeで書くと、こんなにスッキリ!

 

コンパイルされたsingle.php

 

Jadeで行頭に「-」を付けると、1行ずつ<? php ?>が挿入されるので、PHPコード部分では末尾のセミコロンも取って、できるだけシンプルな記述法にしてみました。
(複数のPHP文を記述する時は、?>の直前以外の文にセミコロンを付けるのをお忘れなく。)

Jade-PHPでコンパイルしているようで、wordpress-jade-templateでは、ビルドシステムgulpでJade-PHPが使えるプラグイン「gulp-jade-php」の設定が同梱されていますので、gulpを導入すればすぐに使えると思います。

gulpの導入方法はこちらがわかりやすいです。

CodeZine:まずは「gulp」を動かしてみよう! ~セットアップとはじめてのタスク実行
http://codezine.jp/article/detail/7992

PHPコーディングの注意点:「-」は行頭にしか使えない

<?php ?>の記述が不要になる便利な「-」ですが、PHPコードのみの行にしか使えません。しかしWordPressは、HTMLの属性値にPHPコードを使いたいことも多々あります。

例:aのhrefにPHPコードを使いたい時など

この場合は、Jadeの非エスケープ出力文字「!=」を使って、いつもの<?php ?>を入れる必要があります。

 

表現できないこともある

属性名と属性値の両方がPHPコードで出力されるものは、Jadeでは表現できなそうです。

例:class=”〜”が出力されるもの

そういう時は、Jadeをプレーンテキスト化する「|」を行頭につけて、HTMLタグごと書く必要があるでしょう。