ここ最近、WordPressに触れる機会があったので、その話でも。
トップページやアーカイブ、カテゴリのページ、さらには個別記事のページなどは、デザインがデフォルトのままでも文句ないというのであれば、こちらは特に何もすることなく、管理画面に入って記事を更新するだけでいい。
でも記事の更新とは別に、固定のページを作りたいような場合、例えば自己紹介のページなどを作る場合があるとする。
まあこの場合も、WPの管理画面にある『ページ』って項目から新規追加を選んで、記事を更新するときと同じ要領で本文の中にページレイアウト的なものを書いて投稿すれば、ページを作ることができる。パーマリンクも自分で自由に編集することができる。
(僕が使ったのはversion2.8.4で、他のversionは触ったことがないので、他のも完全に同一かどうかは分かんないっす)
ただ、単純に自己紹介文を書くだけとかなら良いのだけど、もっと、他のテンプレートファイル同様にPHPコードをいっぱい記述したいとかなった場合、このやり方は都合がよくない。っていうか、無理(たぶん)。
そこでどうするか。
通常、個別記事に対応しているテンプレートファイルはsingle.phpなのだけど、ページから新規追加(あるいは編集)した場合は、page.phpがテンプレートになる。なので、page.phpを直接いじれば、PHPコード書き放題、ページ作り放題。自分でphpなりHTMLで作ったコードをpage.phpに直接書き込んでしまえば、あとは管理画面のページの新規追加でパーマリンクの設定だけしておいて、本文には何も書かないで公開すれば、自己紹介のページの出来上がり。パーマリンク設定のところで、一般的な設定を数字ベースにしておくのが良いかもしれない。
ただ、固定のページが1つだけならこれで良いけれど、2つ以上ある場合、例えば自己紹介のページの他に自分の作った作品を公開しているようなページがあるような場合、新規追加でいくつページを作ろうとも、どのパーマリンクをクリックしても同じ自己紹介のページが表示されてしまう。何せテンプレートの中身をそういう風に書き換えてしまったから。
if文か何かで場合分けして書いてもいいけれど、固定のページが増えれば増えるほどソースが長くなるし、それはあまりよろしくないってことで、こんなときは、とりあえず自己紹介のページと作品公開のページをとりあえず別個に作って、themesフォルダの中に入れておく。ここでは仮に、自己紹介のページをprofile.php、作品公開のページをgaralley.phpとする。そしたらあとは、page.phpの中で必要に応じてそれぞれのファイルを読み込めばいいと思う。
自己紹介とギャラリーのページをそれぞれ
http://sample.net/profile
http://sample.net/garalley
としておく。
page.php内↓
<?php
switch(get_permalink()) {
case get_bloginfo('url').'/profile':
require_once 'profile.php';
break;
case get_bloginfo('url').'/garalley':
require_once 'garalley.php';
break;
}
?>
個人的に、こういうときはif文よりもswitch文の方が好きです。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。