2009年1月19日の投稿

wp-content ディレクトリー移設を自動検知する
WordPress 2.6 から導入された、wp-content ディレクトリーを WordPress インストールディレクトリー以外に移設できる機能ですが、これを使った場合、Ktai Style や Ktai Entry などのプラグインはそのままでは動きません。附属ドキュメントにも書いていますが、プラグインにある wp-load.php ファイルの編集が必要です。
なぜそういう編集が必要かと言うと、Ktai Style でのコメント投稿とか、Ktai Entry での外部メールボックス確認など、プラグイン内部にあるファイルを直接起動することがあるためです。この場合、WordPress の API を使うためには、WordPress ルートディレクトリーにある wp-load.php を include
することになります。しかし、wp-content ディレクトリーを移設していると、wp-load.php への相対パスが標準とは異なるため、wp-load.php を呼び出せません。このため、プラグイン側で wp-load.php を持って、WordPress 本体の wp-load.php へのパスを手動設定してもらうことにしているのです。
しかし、WordPress を通常の方法で起動した場合 (普通にブログ閲覧した場合) は、当然ながら、wp-load.php のありかおよびプラグインの設置場所は分かります。これを、各プラグインのディレクトリーに設定ファイルとして書き出してしまえばいいのではないかと考えました。さすがに「ブログ閲覧ごと」に書き出すのは無駄なので、「プラグインを有効化したとき」ぐらいで十分だと思います。wp-load.php のありかは ABSPATH . 'wp-load.php'
で得られるので、プラグインの有効化時にはこの値を wp-load-conf.php というファイルに書き出して (check_wp_load()
メソッド)、プラグインごとの wp-load.php では、このファイルの存在を確認するという実装を試しています。
この手法を使うと、ほぼ自動で設定が可能です。ただし、プラグインのインストール時に、ディレクトリーの書き込み権限を 757 とか 777 とかにしなければならないのがネックでしょうか。チャレンジングな実装ですが、いかがなもんでしょう??
[追記] もちろん、懸念事項として、ニセの wp-load.php へのパスを wp-load-conf.php に書かれてしまう攻撃が考えられます。wp-load.php を include する前に、file_get_contents()
して中身を検査する手もありますが、それを必須にすべきかどうか、悩んでいます。
今年7月1日からE03CAでmixi利用不可
本日、ミクシィが携帯電話の対応機種を7月1日より縮小すると発表しました。対応機種はいわゆる第3世代携帯とPHSに絞られます。
古い機種が切られるのは仕方ないですが、どさくさに紛れてauの法人向け端末もサポート外になっています。そう、E03CAもミクシィ不可になるのです。
E03CAは中身的にはW42CAと同じなので、十分対応可能なはずですが、採用企業で業務外利用が多かったのでしょうか……。法人向け機種を個人で使うにはこういうリスクがあることは承知ですが、ちょっと残念です。ドコモ端末をパケ・ホーダイダブルにするかな〜〜。