紙の日記帳に「10年日記」というものがある。複数年日記のことを連用日記というらしい。Web日記システム
tDiary には「長年日記」という機能がある。
WordPress でもこのようなプラグインはないだろうかと探してみた
[]。「連用日記」を英語で何と言うのだろうなどと思いつつ、いろいろ探しているうちに
onthisday というものを見つけたので、試してみる。
改造のアイデア
自分ではコードを書けないくせに、元ネタがあるともう少し何とかならないものかと思ってしまう。時間が経つと忘れてしまいそうなのでアイデアをここにメモしておく。
まず、そのままでは excerpt (抜粋)の作り方が日本語だとうまくいかないようだ。これは WordPress 本体のどこからかコードをコピーしてくればよさそうだ。
それから、「見ている時点と同じ年の記事は参照しない」というスイッチはあるが、「書かれた時点と同じ年(つまり全く同日)の記事は参照しない」というスイッチもほしい。
もう一つのアイデアはもっと根本的なこと。この
onthisday を見つける前から思っていたことだ。例に挙げた
tDiary の「長年日記」や紙の連用日記でも過去の年の「同一月日」を参照する。しかし実生活は「曜日」を基準に動いていることが多いのではなかろうか。たとえば今年は月曜日とすると去年の同じ日は日曜日で、普通の勤め人や学生のような生活なら、その日どうしを並べるより同じ月曜日を参照するほうが意味が多いように思える。
しばらく前に
「第何何曜日」について考えたので、それを使って、同月同曜日を指すようにできるのではないか。
欠点と言えば、だいたいの場合は1年で1日違い(うるう年なら2日違い)なのだがたまに1週間ほど日付がずれてしまうところがあることだろう。これはそもそも今の暦システムの欠点
[]なのだが。
そのうち暇をみて、改造できるものかどうかやってみたい。もし何かの拍子にこれをご覧になって(あるいは見るより前に)さっさと実装された方があったら教えてください。
WordPress 2.2.2 が出たので入れ換え。マイナーな変更のようだし、もはやあまり話題にはなっていないようだ。
本家からダウンロードし、
日本語リソース案内所から ja.mo をもらってきて置くだけで完了。特に問題はなさそうだ。
wp_list_authors()
さてここを含め複数の管理している(請け負っている) WordPress サイトをアップグレードしたのだが、そのひとつは久しぶりだった (2.1.3 –> 2.2.2)。そこで挙動が変わった点を見つけた。
そこは複数のユーザが執筆しており、通常の記事のほかにも(静的)ページもたくさんあるという構成になっている。たいていの場合サイドバーに「カテゴリー」「アーカイブ」のリストが設置されているように、それらに加えて「執筆者」のリストも表示するるようにしていた。これは wp_list_authors() という用意されている関数を用いている。この引数に optioncount=1 を与えると、執筆者名の横にその人の書いた記事数が表示される。これまでその数は記事のみの数だったのだが、今回のアップグレードで(静的)ページの数も含んだ数が表示されるようになってしまった。
どちらが便利かはサイトによるだろうから、一概にバグとは言えないとは思う
[]。仕様を変更してしまうより、どちらか選択できるようにスイッチを増やしてもらったほうがありがたかった。
WP-Dokuwiki をやめてしばらく WP 標準で書いてみようと思っている。
WP-Dokuwiki で便利に思っていたのはソースコードのハイライトと脚注。これに代わるプラグインを探す。それぞれ数種類づつ見つかったが、ちょっとづつ試してみて
iG:Syntax Hiliter プラグインと
Footnotes プラグインを使うことにした。
現在のバージョン v3.5 は、添付のマニュアルを見ると 19 ほどの言語に対応しているとある。が、ふとサブディレクトリの
GeSHi を最新版に入れ替えてみたらどうだろうと思い、やってみると特に問題はなさそうだ
[]。これで 80 ほどの言語に対応する(ほとんどは一度も使わないだろう)。Bash や diff, LaTeX もいけそうだ。
いろいろ探しているうちに “
iG:Syntax Hiliterの不具合(?)を直す” という記事を発見。ここでも何かの拍子に設定がリセットされてしまったことがあったので、これかと思い対策した。
使い方は
WP-Dokuwiki の脚注とほぼ同じで、簡単。ただ出力は、本文の最後に <br /> をつけてそのあとに番号付きリストを生成するようになっているらしい。するとなぜか自動で挿入される </p> がおかしくなり、HTML 的に間違ったことになる。それで
--- footnotes.php.orig
+++ footnotes.php
@@ -98,14 +98,14 @@
if ($footnotes){
$counter = $start_number;
- if ($start_number != 0) $data = $data.'<br /><ol start="'. ($start_number + 1) .'" class="footnotes">';
- else $data = $data.'<br /><ol class="footnotes">';
+ if ($start_number != 0) $data = $data.'<div><ol start="'. ($start_number + 1) .'" class="footnotes">';
+ else $data = $data.'<div><ol class="footnotes">';
foreach($footnotes as $footnote){
$counter++;
$data = $data.'<li id="footnote-'.$counter.'-'.$post->ID.'">'.$footnote.' '.$current_settings['pre_backlink'].'<a href="#footnote-link-'.$counter.'-'.$post->ID.'">'.$current_settings['backlink'].'</a>'.$current_settings['post_backlink'].'</li>';
}
- $data = $data.'</ol>';
+ $data = $data.'</ol></div>';
}
return $data;
}
と、<div> に入れることにした。
見栄えはスタイルシートで設定する。
残るこまごましたことについて。
ブロックの境界
本文や sidebar (という名の実質 bottombar)などで float で段組をしているため、それを解除する
clear:both
を入れる必要がある。といって次のブロックの先頭に入れるのも気持ちが悪い。そこでブロックの境界に
<hr>
を使い、これに
clear:both
をつけることにした。スタイルで
hr {
display: block;
clear: both;
height: 0;
border: none 0px; /* 完全に消すにはこれも必要。 */
visibility: hidden;
}
として見かけ上は消してしまう。
「スタイルシートを使用しない」状態で見ても(といってそんな人はいないと思うが)見通しがよくなった。
page.php
Template Hierarchy に詳しい説明がある。
個別記事(single)と静的ページ(page)はよく似ている(コメントを許すかどうかを除いて)と思うのだが、静的ページで
page.php がない場合に
single.php を探しに行くことはないというのは意外だった。ここではコメントつきページのテンプレートは single と同じとした。
<?php
/*
Template Name: Page with comments
*/
?>
<?php include (TEMPLATEPATH . '/single.php'); ?>
テンプレートが増えるとややこしくなるので、コメントなしページのテンプレート
page.php は作らず、
index.php の中で
is_page()
でそれ用の処理をすることにした。
index.php, single.php
ようやく本文について。
個々の記事を、本文とコメントの2段組にした。そもそもこのアイデアを思いつき、そんなテーマを探してみたものの見つからなかったので今回自分で作ってみたのだった。
個別記事の表示(single.php)のときだけでなく、index.php でも各々の記事にトラックバックURLを表示するようにした。こうしているテーマも滅多にない。私の場合 more を使うことはあまりないので、トップページを見るだけで記事全文を見られることになる。わざわざ single に行かなくてもここにトラックバックURLを表示したほうが親切だろうと考えたのだ。
このトラックバックURLは実に長くなり、レイアウトで苦労する
[]。そこで、よく他のサイトで見かけていたフォームの input に入れてある形を思い出した。入力させるところでもないのに何故こんな形にしているのだろうと不思議に思っていたが、ここにきて合点がいった。要するに幅を固定して表示できるのだ。さっそく真似ることにした。
comments.php
フォントは、他の部分では指定するとしても総称名までにしたが、コメントのところだけは遊び心で固有名を指定した。コメントとトラックバックは、順番は分けないが見かけが違うようにした。
Edit Commentsプラグインを使う。WordPress 2.1への対処法がコメントの 300 番にある。
もう一つ、
Subscribe To Commentsプラグインを使うようにした。旧版(2.0.*)は設置がやや面倒だったが新版(2.1)は複数のファイルが一本化されて簡単になっていた。ところで設定で clear:both を制御できるはずなのだが毎回元に戻ってしまい、いまのこのテーマはコメントを含む記事の部分を2段組にしているので非常に具合が悪い。
if ( !$settings['clear_both'] ) {
$settings['clear_both'] = 'clear_both';
$update = true;
}
の個所をコメントアウトして思いどおりになったのだが、他の人は困っていないのだろうか?
[]
メッセージは旧版とほとんど変わっていないので
Subscribe to Comments 日本語化より2.0.4版をいただいて流用する。
いずれも
Tech de Goより。簡にして要を得ている。
WordPressはなまじソースをいじれるので、ついそこに手を入れてしまうが、アップグレードなどがあるので管理が大変になる。そうか、このように前処理・後処理でできることもあるのだ。目から鱗。
footer.php
特に表示しなくてもいいのだろうが “Copyright © 年”を表示することにする。この年のところを、最も古い記事と最新の記事の日付を見て自動的に生成してくれるスクリプトを
Boxy But Goldというテーマの中に見つけたので使うことにした。
sidebar.php
sidebarという名は踏襲するが見かけはbottomで、 3 段組とした。アーカイブの選択には
monthchunksプラグインを使う。