I love the frozen FOOD.
WordPressのテーマを作成する際に気を付けるべきこと。
今回は、速度面とメンテナンス面について、少し触れます。
今あるテーマをどうするかという議論はおいておいて、今回は、テーマを作成する際に「デリケートに考えたほうがよい点」を、ものすごく単純な側面でお話します。尚、本件は経験則だけで記載してきます(笑)経験則だけですので、お気をつけください。
速度面を考えていきます。
まずは、wordpressの簡単な全体像をば紹介。
トータル処理数を減らせばいい
だけです。
wordpressのテーマやら追加機能を、いかに動かさずに思い通りのデザインをブラウザに投げられるかです。
尚、今回は、コンテンツやブラウザ側の処理については言及しません。
コンテンツ読出しなどは、wordpress速度改善などを参照ください。
昔話にもあります「ウサギとカメ」。単純に考えて、ウサギの方がテキパキしてますよね。レースゲームか何かでキャラクターを選択するなら、ウサギの方が有利っぽいです。途中、ぐーたらな性格がでなければ早いでしょう。
プログラムで考えます。
「ゴールにつくのが早い」というのを「処理に時間がかからない」という意味で、「ウサギ級」と「カメ級」を定義します。
ついついあまり考えずにコードを書いてしまうのですが、wordpressの機能やphpのコード、追加機能にはこれらの「級」があるわけです。
ただ、困ったことに、普段テーマを作っている時は、「カメ級」なのか「ウサギ級」なのか、どちらかを考えながらコードを書いていることが少ない。とりあえずwordpressの便利な関数やプラグイン(追加機能含む)を使い倒すわけです。
ただ、その機能の「級」がわかったとしても、テーマの中で使いたいシチュエーションに出くわすわけです。遅くたって機能ほしいもんっ、ってな話です。
じゃあどうするか。
単純です。
同じ結果が出るものは2度よばない
例えば、postのloop処理内で、何度も日付を読みだすとか、何度もタイトルを読みだすとか。
また、loopの中で、そのpostTypeがsingleなのかpageなのかの判断をする必要はないわけですよね。
1度読みだしたら再利用することを考えましょう。極端なことを言えば、ハッシュとかに保存したものであれば、一度要素を取り出したら、取り出したものを再利用していくぐらいののりを考えるといいかもしれない。
つまるところ、テーマから呼び出す処理の向う側では、「カメが重い荷物を持ってる」ぐらいの勢いで考え、コードを書いていくべきです。できるだけ同じことをさせない、同じことを聞かない、これを徹底するといい。
メンテナンス性について、少し考えます。
今回は2つ取り上げてみます。
wordpressに機能を付け加えるアプローチは、2つあります。
ベースの機能を持ったテーマ。そして、その機能を拡張(補完)するプラグイン。
どちらにでも「機能」を記載できます。
—
さて、今回「テーマを作成する際に気を付けること」なので、こんなことを考えます。
テーマのfunction.phpにshortcodeを入れた
別に普通のことです。私も普段からこうしてます(笑)
ただ気を付けないといけないのは、テーマを変えるときです。
Aテーマを他のテーマへ変えた瞬間、shortcodeがきかなくなります。Aテーマの中にshortcodeを定義していたので、新しいテーマでshortcode部分が「生データ」として画面にでてきちゃう(タグで表示される)わけです。
この手のことがあるので、テーマを作成する場合は、プラグインとセットで作成する方法を勧めてます。
「Aテーマ」というテーマを作る場合、2つに分ける感じです。
こうしておけば、少なからずAテーマをBテーマにかえても、Aテーマプラグインを停止しなければ、shortcodeは助かりますでしょ。
php言語というのは、ほんとやたらと色々書ける。小難しいことも単純にサクサクかける。ほんと便利な言語です。htmlを書きながらphpで補完していく。ほんと楽ちんな言語です。
ただ、困ったことが1つあります。
それは、「やっつけでコードを書いちゃう」ってことです。
あまり計画的にやらなくても、コードが書けちゃう。htmlだろうとphpだろうと構わずに、次から次へとコードがかける。
これすなわち、
「ぐちゃぐちゃ」なコードになってしまいがち
ということですね。。。。
(私も、いつも反省してますが・・・)
さて、ここで2個ほどおすすめの技を紹介しときます。
少なからず、少しは整理できますよ。
よく、function.php 1つのファイルに色んな機能を盛り込む方いらっしゃいます。が、あとで、よくわからなくなりがち。できたら、function.php にはこんな感じで requireかますといいかもです。
//初期化 require_once( "func/init.php" ); //コメント系処理 require_once( "func/comment.php" ); //ショートコード処理 require_once( "func/shortcode.php" ); :
目的で分けるといいかもです。
デザインのテンプレートとなる index.php などを編集する際の話です。
function.phpも、少なからずそうなのですが、 index.php などは、htmlレイアウトを必ず持っているスクリプトです。
ですので、htmlとphpが強依存で同居している状態。フレームワークなどを使っていない場合は、この依存が激しい状態(見た目にわかりにくさを醸し出すコード)を作り出すということを念押ししながら作業を進めないといけないです。
が、さっぱり分からないなんてこと、ざらにあるかと思います。
これを避けるためには
「処理」と「表示」を分けて考える
が一番です。
例えば、下記のことを検討するのも手です。少しは見やすくなりますよ。
Gem-one(ジェムワン) 権蔵
Gem-one代表.システム開発業ブランドGem-one adIT、音楽レッスン事業 Gem-one Music設立。ビリヤード・スケジュールサイト すけどんも絶賛運用中。
■ブログ
ちょろっとお時間頂戴