前にも同様のことで困ったのに、解決方法をメモしておかなかったために時間を無駄にしたでござる、の巻。
この手のカスタマイズではよくあることなので、何かあったときにはいちいちメモしておくに限る。
手間を惜しむと、かえって遠回りになってしまうという好例(;´д`)トホホ…
で、本題です。
WordPressの投稿記事は、デフォルトで
「http://nagisa.skr.jp/?p=9」
のようなアドレスになる。
この「?p=9」の部分が、当該記事を示すインデックスになっている。
が、これではパッと見たときに何時の記事だったか、何の記事だったか分かりづらい。
そこでWordpressでは「パーマリンク設定」というものが用意されていて、この部分を自分なりにカスタマイズすることができる。
私の場合、以前使っていたMovable Typeのブログとの整合性を考えて、この部分を
「/archives/%year%/%monthnum%/%day%_%hour%%minute%.html」
という設定にしている。
つまり、投稿した日時がファイル名になるように設定しているわけ。
ところヽ( ・∀・)ノ┌┛ガッΣ(ノ`Д´)ノ
WordPressの内部構造では、投稿記事のID判定条件として「パーマリンクにyear,monthnum,dayを設定している場合はhour,minute,secondまで設定しないとsingleページとして認識されない」仕様になっているのだそうだ。私の場合はminuteまでの設定になってるので、うまくいかなかったのだな。おい。
singleページとして認識されない場合、何が不都合かというと、コメント投稿欄が表示されないのである(comments.phpを読み込んでくれない)。これでは困るのである。
だからと言って、パーマリンクに「秒」まで表示させるのはいかにもやり過ぎ。
なので、「wordpress/wp-includes/query.php」のほうを直して、むりやり認識させる。
Wordpress 2.9.2だと、1236行目あたり
[php light=”true”]} elseif ( (” !== $qv[‘hour’]) && (” !== $qv[‘minute’]) &&(” !== $qv[‘second’]) && (” != $qv[‘year’]) && (” != $qv[‘monthnum’]) && (” != $qv[‘day’]) ) {
// If year, month, day, hour, minute, and second are set, a single
// post is being queried.
$this->is_single = true;[/php]
ここからを、「 &&(” !== $qv[‘second’])」 を取ってしまおう。
[php light=”true”]} elseif ( (” !== $qv[‘hour’]) && (” !== $qv[‘minute’]) && (” != $qv[‘year’]) && (” != $qv[‘monthnum’]) && (” != $qv[‘day’]) ) {
// If year, month, day, hour, minute, and second are set, a single
// post is being queried.
$this->is_single = true;[/php]
これで大丈夫。
ちゃんと個別の記事ページとして認識されて、コメント投稿欄も出るようになった。
やれやれ。