WordPress Snippet

ワードプレスをカスタマイズしよう

僕の見た、Twenty Twelveテーマ

Twentytwelveの上流には、_s(underscores)というテーマプロジェクトがあり、underscoresテーマは、toolboxというテーマをフォークしたもののようです。

テーマテンプレートのhtml構造は、toolboxや、underscores(_s)と、アクションフィルタの記述などを除き、同じといってもいいほど極似しています。

toolbox 日本語リソースと HTML ワイヤーフレームを配布しますで紹介されているtoolboxのhtml構造と、比較してみてください。

そのページで紹介されている、toolboxのhtml構造(javascriptが動作しなかったのでリンクしておきます)

ここに記述されている、Toolboxのhtml構造と、Twelveを比較してみてください。

このようなことから、TwentyTwelveをみると、

  • underscores starter theme(_s)をベースで

  • Twentytwelveのレスポンシブテーマの特徴と、

  • 固定フロントページを継承して

テーマオプションなどもない、よりシンプルに仕上げられたテーマと言えそうです。

underscoresは、Githubにホストされていて、誰でも利用できるようになっています。

underscores テーマが、Githubに置かれている事によって、

2012/12月現在400人以上の人がforkしているようです。

新しい物好きのギークたちの、物見遊山と見ることも出来るかもしれませんが、ソーシャルテーマコーディングの幕開けになるようなものにも見えます。

例えば、ある日本人が、このテーマをフォークして、ランゲージファイルを省いた、日本語専用のテーマを作ったとします。

従来であれば、それは、無名で、誰もそれを知りえないようなテーマとしてWEBの片隅に埋もれていった事だと思いますが、フォークすることで、人の目に触れる機会が爆発的に増える可能性もあります。

また、Twenty Twelveのカスタマイズを行う場合に、underscoresやtoolboxの過去のカスタマイズを参照する事で、合理的な開発が可能になるかもしれません。

また、CSS1の時の、ZenGardenのような試みが、CSS3でも行われたら、刺激的でしょう

温故知新です。

Twenty Twelveをソーシャルコーディングの世界におく事も、ライセンスに従う限り、何の問題もないでしょう。

多くの人たちが、よってたかって、自分たちの言語のための、ベストプラクティスを目指したテーマ制作への道筋は、すでに出来上がっている

そういった可能性を、新しい標準テーマから連想するのは、私だけでしょうか


テーマに関するメモ

Twenty Twelve – 1.2

2013/8/14 バージョン 1.2に更新されました

今回の変更は、Twenty Twelve – 1.2 Diffで確認する事が出来ます

  • 投稿フォーマットアサイド、画像、スタンダードの場合に、投稿タイトルから、title属性が削除
  • 固定ページで、front-page.phpテンプレートが使われていない場合、投稿サムネールを表示するようになりました
  • functions.php twentytwelve_scripts_styles()が新しくなりました
  • functions.php twentytwelve_get_font_url() 追加
  • functions.php twentytwelve_mce_css() 追加
  • functions.php twentytwelve_custom_header_fonts() 追加

他、CSSとWEBフォント関連の修正が行われた模様です。

テンプレート階層

単一の投稿を表示するパートファイルも、ループで投稿を表示するパートファイルも、同じものを使うようになりました。

Theme Display Page template Display Post templete
Twenty Ten loop-page.php loop-single.php
Twenty eleven content-page.php content-single.php
Twenty Twelve content-page.php None

シングル投稿も、ループ投稿も、投稿フォーマットが指定されていなければ、どちらも最終的には、content.phpを参照するようになりました。

このことが、引き起こす戸惑いに、 twentytwelveで抜粋を表示(http://ja.forums.wordpress.org) など、

index.phpから、テンプレートパートファイルを探して、見つけた、content.phpのthe_content()をthe_excerpt()に変更したら、シングルページもthe_excerpt()になってしまうわけです。

(もちろん、欠陥ではないです。TwentyTwelveは、そのように設計されたという事です。)

従来、ループページは、ループページ用のアーティクルの表示スタイルがあり、単一の投稿の場合は、それ専用のアーティクルの表示スタイルがあるというのが、常識的だったと思いますが、その常識はTwentyTwelveで、覆されたようです。

2012/12/28@追記

よく考えれば、覆されたというより、index.php , single.phpというテンプレートの違いが必要な時代は終わったよという意味なのかもしれません。index.phpがトップページを表示するテンプレートという役割が薄められ、front-page.phpが、メインでトップページでの役割を担うという考えがあれば、このような構成は合点がいく。

ブログには重きを置かず、CMSだよ、これからはと言っているのかもしれない。

いずれにせよ、以前のテーマとは、性格が大分違う

設計について

Twenty twelveで廃止されたものの中に、twentytwelve_setup() の function_exists チェックがあります。

このチェックが行われなくなった事で、チャイルドテーマからのコントロールが難しくなりました。

例えば、

カスタム背景の機能を取り去りたいような場合、function_exists チェックがあれば、twentytwelve_setup()を作る事ができ、それにしたがって子テーマは、動作するようになりますが、

ないので、親テーマの

add_theme_support( 'custom-background', array( 'default-color'=> 'ffffff',) );

チャイルドテーマから、の処理の後に

add_action( 'after_setup_theme', 'child_twentytwelve_setup',11 );

function child_twentytwelve_setup(){
	remove_theme_support( 'custom-background' );
}

として、機能を無効にします。

問題は、先に走った、add_theme_supportを参照して、別の処理がすでに走ってしまっているという問題です。

body_classは、最初 add_theme_support()でセットされた、

get_theme_mod( 'background_color' ) | | get_background_image()

を確認して、custom-background クラスを返してしまう。

なので、カスタマイズ性が「損なわれた」と見ることも出来る

(@source)

Functions that are not pluggable (not wrapped in function_exists()) are instead attached to a filter or action hook.

Twenty Twelve functions.php コメントより

どうなんでしょうか?

国際化

非英語圏へのデザイン上の配慮

初心者に優しいWPカスタマイズ

日本語のスマホで採用されているフォントは、モリサワ新ゴRとDroid Sans(アンドロイド系)、HiraKakuProN-W3(iPhone)なのです。これらを加えたうえで、日本語環境のPCで表示させたいフォントを加えます。

Twenty Thirteen