日曜研究室 〜技術的な日常〜

技術的な観点から日常を綴ります

wp.Vicuna(Warship)に変えてみた


   5月 30

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の終了タグの直前に

PHP:
  1. <?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なかなか良いです。

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Comments

  1. shp より:

    問題2:この前導入したWP Captcha-Freeが動作しない。

    この通り修正してもだめでした
    Invalid Data: Please go back and try again.

    http://greatwordpressthemes.com/wordpress-plugins/captcha-free/

    WordPress 2.6.5
    vicuna CMS - WordPress Theme

  2. admin より:

    コメントありがとうございます。

    WP Captcha-Freeが動作しないということで、
    色々とバージョンが上がって挙動が変わったのかなと思い調べてみましたが、
    WP Captcha-Freeもvicuna CMSもこの記事を書いてから現時点まで
    特にバージョンは変わってないようです。

    WordPress2.6.5は多分使ったことがないのですが、
    それより古いバージョンでもそれより新しいバージョンでも
    動作してたので多分問題ないかと思います。

    気になったので、別個にWordPress2.7を新規インストールして
    現在最新のvicuna CMSとWP Captcha-Freeを入れて
    上記の手順でテストしてみましたが、問題はありませんでした。

    「Invalid Data: Please go back and try again.」
    このメッセージが出るということであれば、
    FirefoxとそのプラグインであるWeb Developerを使って
    WP Captcha-Free用の不可視フィールド(id:captchafree)が
    コメント欄のformの開始タグと終了タグの間にきちんんと生成されてるかどうか、
    また、formのidやsubmitのidに相違が無いか、
    さらに、JavaScriptのエラーが発生してないかどうか確認したほうが良いです。

    あとは他のプラグインと衝突してる可能性も考えられますので、
    最低限のプラグインのみ有効にしテストしてみたほうが良いかもしれません。

Leave a Reply









Spam protection by WP Captcha-Free