テーマを作る (2)

header.php

まずは header.phpについて。 WordPress 2.1に附属のテーマ default からいただいてきて改造していたのだが、ページのソースを見ると
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja-UTF">
とある。ん? langの中身はこんな書き方できたっけ? header.php を見ると、2.1 で登場した language_attributes() がこれを出力している。新しいためか日本語での情報はほとんど見つからない。hiromasa さんの“WordPress 2.1 の新機能”では「WPLANG の _ より前の値が」出力されるとあるが実際には WPLANG の「_」を「-」に置き換えて出力されているようだ。WPLANG は wp-config.php の中で 2.0.7ME からの名残で ja_UTF となっていた。これまで WPLANG は言語ファイルの選択にしか用いられていなかったものが表に現れてきたということか。 元来、言語_地域という構造のはず(例えば fr_CA はカナダでのフランス語)で、それを流用して ME では ja_UTF として使ったのだろうか。厳密に言ってこれはどうなんだろう。一方でプラグインの言語ファイルでは ja_UTF という書式も随分広まっているようだ。

テーマを作る

WordPress 2.1 にしたことだし、ひとつ自分でテーマを作ってみるか、と思ってはじめてみた。作るといってもゼロから作るわけではなくて既存のものを換骨奪胎して組み上げていくに過ぎないのだが、そうやって人のものを見るのが何より勉強になる。できたものを見るとやっぱり自分にはセンスがないなと痛感するがそれはそれとして、この作業を通していろいろ解ったことがあったので書いておこうと思う。

IEで検証

ふだん使っているのは Debian GNU/Linux 上の Firefox[1]である。検証に VMWare上の Windows XP の Internet Explorer を使う。IE7にバージョンアップし、別にスタンドアロン版の IE6を用意してこちらでも一応チェックするようにした。 それにしても IEの挙動には驚かされる。これまでにかかった時間の3分の2は IEで見たとき変なことになってしまうことへの対処ではないだろうか。IEというか Windowsのフォントの「汚さ」にも驚く。手をかければどうにかなるのだろうが普段使うわけでもないのでデフォルトのままだし(それに多くのライトユーザはそのままだろうし)、逆に手をかけないとどうにもならないので十分に手をかけている Linuxシステムを比較するのは公平でないのは承知のうえで、世の大部分の人がこの汚さであちこちのページを見ているのだと思ったら暗い気持ちになってきた。 こんな風に見えている例えば私はふだん使いのFirefoxのデフォルトを明朝体にしている。印刷された本を見てもわかるように、長い文章を読ませようとする場合は明朝体のほうが読みやすい。しかし Windowsにフォントを追加しない状態で、明朝体でwebを見ようという気にはとてもならない。Linuxを使ってみて UIが明朝で表示されることや Windowsでも Firefoxで明朝がデフォルトになっていることに強い違和感を訴える声を見かけていたが、なるほどこういうことだったのか。それらの人は既に、明朝体とは醜いもの、と思い込んでいるに違いない。確かにデフォルトの Windowsではそうだろう。これは何か明朝体を使わせないようにする陰謀ではないかと思えるほどだ。疑問に思うのなら試しにアンチエイリアスのかかる明朝体フォントを入れてしばらく使ってみればよい。それにIEのデフォルトの「中」のフォントの大きさも問題だ。これらのせいでやたら小さなサイズのゴシック体に固定したブログサイトだらけになっている訳だ。 – – – そのつもりはなかったが、だんだんひどい悪口になってきた。テーマを作る話はまた今度。
  1. Debianでの呼称は Iceweaselなのだが、それでは余所で通じないので Firefoxと呼ぶことにする

ビジュアルエディタのフォントの大きさ

以前の記事にコメントをいただいた。実のところ私自身はめったにビジュアルエディタを使っていないので放っていたのだが、これを機会にいまいちど調べてみた。

2.1の場合

既に WordPress 2.1 に移行してしまったので、まずはこちらから。 wp-includes/js/tinymce/tiny_mce_config.php で
  $mce_css = get_option('siteurl') . '/wp-includes/js/tinymce/plugins/wordpress/wordpress.css';
        ...
  content_css : "<?php echo $mce_css; ?>",
のようになっている。 したがって wp-includes/js/tinymce/plugins/wordpress/wordpress.css の
body {
        ...
        font: 1em/1.3em Georgia, "Times New Roman", Times, serif;
        ...
}
を変更すればよい。

2.0の場合

某所でいまだ使っている 2.0.7ME でも見てみた。 config がよくわからないし、wp-includes/js/tinymce/plugins/wordpress/wordpress.css には関連する記述がない。 しかし theme を advanced という記述が見えるので、 wp-includes/js/tinymce/themes/advanced/css/editor_content.css が使われているようだ。この body のところの値を変更したら反映された。

Role Manager プラグイン

WordPress2.1 にしたら Role Manager プラグイン
Fatal error: Cannot redeclare class rolemanager in …/role-manager.php on line 22
のエラーを出すようになってしまった。検索して、対応済の WordPress 2.1: Role Manager PlugInを見つけた。

任意のページをトップに

WordPress 2.1 の新機能として、任意の(静的)ページをトップページにできるようになった。 が、このページはホームとは見做されない(is_home() は false になる)らしい。例えば footer.php でホームとそれ以外で表示される内容が変わるように作られているテーマもあるのだが、何しろこの機能では front page ではあっても home とは見做されないので、思ったようには変わってくれない。if (is_home()) の部分を
if (get_option('show_on_front') == 'page' && get_option('page_on_front') == get_the_ID())
...
みたいにやるのだろうか。 また逆に、最新記事を別のページに割り付けることもできる。URL 的にはトップではないのだが、そっちでは is_home() も true と判断されるし home.php も適用されてしまう。 とにかく、こういう「仕様」であるらしい。

NICとインターフェイス名

以前、[[//pasero.net/~mako/blog/s/34#intel_pro_1000gt|「で、使わないオンボードLANとieee1394をBIOSで殺しても、新しいNICは eth0 にはな らず eth2 としてしか認識してくれない。」]]と書いたのだが、その答が[[http://lists.debian.or.jp/debian-users/200702/msg00039.html|Debian JP Users ML]] に流れてきた。これか!と思って自分のところの/etc/udev/rules.d/z25_persistent-net.rules を見てみたら、確かにここで当該NICをeth2にするという設定になっていた。

WordPress 2.1 に移行

このサイトの WordPressを 2.0.7 から 2.1 に移行した。意外に問題は少ない。2週間ほど出遅れている分だけ情報があるのがありがたい。

日本語化

WordPress 2.1用日本語リソースをもらってくる。wp-content/languages/ 以下に置いたほうがいいそうなので、ja_UTF.mo, ja_UTF.po と名前を変えて置く。

メイルの文字化け

コメントが付いたときの通知メイルのタイトル部分が化ける。これに関して、メールタイトル文字化けに2007.1.24追記として情報があった。 wp-includes/pluggable.phpの中の wp_mail()を変更するのだが、pluggable.php冒頭に
/* These functions can be replaced via plugins. They are loaded after plugins are loaded. */
と書かれており、確かに各々の関数は if ( !function_exists …): endif; で囲まれている。 というわけで、local.phpという自分用のプラグイン・ファイルを wp-content/plugins/ に作って、
function wp_mail($to, $subject, $message, $headers = '') {
        return @mb_send_mail($to, $subject, $message);
}
と書くことにした。ここに書いておけば、バージョンアップでwp-includes/ 以下が更新されても修正し忘れずにすむ。

その他の日本語関係

WordPress 2.1 抜粋表示方法 the_excerpt()という情報もあるのだが、特に手を入れなくても文字化けせずにRSSリーダで読めているし、自分のところの記事にトラックバックしてみたがこちらも問題なさそうだった。ここではいまのところ何も手を入れていない。これらは自分以外のところでしか問題がでないので、何とも確認しにくい。

プラグイン

根幹に関わるプラグインはいまのところ問題なさそうだ。細かいものでは、Link Relがちょっとおかしな挙動になってしまったようだ。しかしあまり重要ではないので当面ははずしておこう。そのうちゆっくり見直すことにする。 もうひとつ挙動がおかしいのはTam-attachmentだが、「WordPress 2.1 への対応は現在調査中ですのでしばらくお待ちください」ということなので、しばらく待つことにする。