wp.Vicuna(Warship)に変えてみた
とりあえず、wp.VicunaというWordPressのテーマを入れてみました。 wp.Vicunaはテーマ単体としてはシンプルなXHTMLで出力されるようになっていて、スキンという名のcss(と装飾用の画像)を切り替えて色んなデザインを楽しめるようになっています。 Warshipというスキンが気に入ったのでそれを入れてみました。 入れてみた結果、見た目はほぼ完璧だったのですが、色々と機能的な問題が発生したので、その内容と解決方法を書いておきたいと思います。 問題1:記事にWP-SWFObjectやiG:Syntax Hiliterを使ってFlashやコードを埋め込んだときに、埋め込んだもの以降の文章が左にずれる。 これは最初、使ってるプラグインやwp.Vicunaとの相性問題かと思って色々調べたんですが(使ってるプラグインのソースほとんど読んでしまいましたorz)、もっとかなり単純な原因だったようです。 WP-SWFObjectやiG:Syntax Hiliterで記事に何かを埋め込んだ場合、埋め込んだものはdivタグで囲まれます。 そして、brBrbrは記事全体を1つのpタグで囲みます。 このpタグの中にdivタグが存在するということは、wp.Vicunaが使ってる「XHTML 1.0 Strict」では許されていません。 で、「XHTML 1.0 Strict」でpタグの中にdivタグがあった場合、ブラウザ(FireFox2,IE6,IE7で確認)は、何とpタグの中のdivの開始タグの直前にpの終了タグを移動してしまうようです。 つまり、divタグ以降がpタグの外に出るわけで、WP-SWFObjectやiG:Syntax Hiliterで埋め込まれたdivタグ以降が、マージン指定などされたpタグの外に出てしまい、ずれるということが起こっていたようです。 最初、プラグインで使われてるJavaScriptが悪さしてるのかと散々ソースを読みましたが、原因が分かって何か拍子抜けです。 で、この問題を回避する方法ですが、要はpタグでdivタグを囲まないようにすれば良いだけなので、僕の場合は、brBrbr.phpで最終的に記事をpタグで囲んでる部分をclass指定ありのdivタグで囲んで、そのdivタグにpタグのスタイル指定と同じ指定をcssでしました。 これで、問題はなくなったようです。 問題2:この前導入したWP Captcha-Freeが動作しない。 WP Captcha-Freeが使えてたころのテーマのcomment.phpとwp.Vicunaのcomment.phpを見比べてみると、wp.Vicunaのほうにdo_actionという関数の呼び出しが足りないことに気付きました。 とりあえず、wp.Vicunaのcomment.phpのコメント記入欄部分のformの終了タグの直前に PLAIN TEXT PHP: <?php do_action('comment_form', $post->ID); ?> を追加することで、とりあえずWP Captcha-Freeがコメント投稿時に読み込まれるようになりました。 しかしこれだけだと正常に動作しませんでした。 よくソースを見てみると、WP Captcha-Freeが期待しているformタグのidとwp.Vicunaのformタグのidが違ったので、wp.Vicunaで吐き出されるXHTMLに合わせてcaptcha-free.phpのgetElementById('commentform')をgetElementById('commentsForm')へ置換しました。 しかし今度は何故かコメントの投稿ボタンを押すと、記事の検索処理が動いてしまいます。 これもよくソースを見ると、WP Captcha-Freeが期待しているコメント投稿ボタンのidとwp.Vicunaのコメント投稿ボタンのidが違ったので、wp.Vicunaに合わせてcaptcha-free.phpのgetElementById('submit')をgetElementById('comment-post')へ置換しました。 これでようやく正常に動作するようになりました。 とりあえず今のところは、上記以外の問題は発見してません。 あとは、wp.Vicunaが中途半端に日本語化されてるので(といっても作者は日本人みたいだから、理由があって敢えて英語を使ってるんでしょうけど)、独自に日本語化してみました。 wp-content/themes/wp.vicuna/languages/ja_UTF.poが言語ファイルのソースなってるので、それを心行くまで編集して、後はwp-content/themes/wp.vicuna/languagesディレクトリで、 # msgfmt --output-file=ja_UTF.mo ja_UTF.po とコマンドを打てばコンパイルできます。 ということで、まともに使えるようになるまで一苦労ありましたが、wp.Vicuna、なかなか良いです。というかWordPress2.5.1なかなか良いです。
Read the rest of this entry »