2008年6月25日の投稿

2008-06-25
晴れ

WordPress 2.6 対応を盛り込む

ゆりこ による 23:51:56 の投稿
カテゴリー: WordPressハック
タグ: , , ,

WordPress 2.6 ベータ版が出た (tai さんの記事) とのことで、拙作プラグインも対応を図ることにしました。一番影響が大きいのは「wp-config.php をウェブルート以外の場所に置く機能」ですね。Ktai StyleKtai Entry は、wp-config.php を require するという挙動をしている箇所がいくつかあるので、これらを新設の wp-load.php の require に変更しなければなりません。WordPress 2.5.1 以前との互換性を考えると、以下のように wp-load.php の存在をチェックして require するファイルを変更すればいいでしょう (ABSPATH のチェックはお好みで)。

if (defined('ABSPATH')) {
	$path = ABSPATH;
} else {
	$path = dirname(dirname(dirname(dirname(__FILE__)))) . '/';
}
if (file_exists($path . 'wp-load.php')) {
	require_once $path . 'wp-load.php';
} else {
	require_once $path . 'wp-config.php';
}

他の方が作られている携帯閲覧プラグイン、メール投稿ツールも、wp-config.php を include/require している箇所があるため対応は必須ですね。ただし、wp-config.php を従来と同じ箇所に置く場合はそのままで動いてしまいます。とはいえ、「セキュリティーのため、wp-config.php を移設することが好ましい」という設置指南がされることもありそうですから、その場合は対応していないプラグイン・ツールは「WordPress 2.6 非対応」となりそうです……。

[追記]「セキュリティにより重きを置くためにリモートパブリッシングを無効にできる機能」は、XML-RPC や Atom API を停止するだけで、wp-mail.php を停止するものではないようです。これも停止しないと片手落ちだと思うので、さっそく trac に提案かな〜〜。どうせ提案するなら「wp-mail.php 経由の POP3 サーバー DoS アタックを防止する機能」「wp-mail.php の日本語対応」もパッチ送付したいところです。

[さらに追記] wp-config.php を include しているプラグインは、「Lightweight google Maps」も該当でした (Ajax で非同期にアクセスする locations.php にある)。最近アップデートしてないので新機能も盛り込んでのリリースをしましょうか? hiromasa さん作の「wp-otenki」も該当しますので、ひさびさのアップデートがされることでしょう ;-)

[またまた追記] 「WP_CONTENT_DIR, WP_PLUGIN_DIR 定数への対応を行なって気がつきましたが、この定数を変更してプラグインディレクトリーを変更すると、上記の wp-load.php 読み込みが正常動作しなくなります!! wp-load.php への相対パスが一意に決まらないためです。うーん。どうしましょう。