2.6から「WP_CONTENT_DIR」定数が追加され、テーマやプラグインの取り方の一部が変更されたのは感じていましたが、ここについては仕様変更なのでしょうか?
おそらくそうだと思います。フルパス表示だと長くて見にくくなるという欠点はありますが、プラグインの追加・削除をするには必要な情報ですから、親切だと思いますよ。
もし、従来通りの表示だとプラグインディレクトリーを変更しているのに、従来の場所にアップロードして「プラグインが認識されない」と悩むなどの事例がありそうですし。
まぁ、lilyfanさんのおっしゃるとおり、親切と言えば親切なんですが、レンタルサーバなどを使っていると「なんだこのディレクトリ」とたぶん最初驚くかと思います。
(まぁ慣れれば問題ないんですけどね)
もし、従来通りの表示だとプラグインディレクトリーを変更しているのに、従来の場所にアップロードして「プラグインが認識されない」と悩むなどの事例がありそうですし。
プラグインディレクトリをABSPATHの外に出すことってありますか?
そうなるとたぶん、PLUGINDIR を使っている部分との整合性も採れなくなりますし、WP_PLUGIN_DIRがsiteurlの外に設定されることはまずないと思うのですが…
これらの定数を定義しているwp-settings.phpを見ると
PLUGINDIR = wp-content/plugins
WP_PLUGIN_DIR = WP_CONTENT_URL . '/plugins'
WP_CONTENT_URL = get_option('siteurl') . '/wp-content'
となっています。
ここの仕様がまた変わらない限りは
プラグインディレクトリをABSPATHの外に出すことってありますか?
プラグインディレクトリーというより、wp-content ディレクトリーを ABSPATH の外に出すのは、それなりに需要がありそうです。wp-content ディレクトリーはユーザー独自のデーターが入っているので、それを ABSPATH の外に出してやると、CVS や Subversion などで WordPress 自体のアップグレードがやりやすくなりますから。
WP_PLUGIN_DIR = WP_CONTENT_URL . '/plugins'
WP_CONTENT_URL = get_option('siteurl') . '/wp-content'
コードをよく見たら分かりますけど、2つめの WP_CONTENT_URL の定義は、「まだ WP_CONTENT_URL が define されていないとき」のもの (デフォルト定義) です。なので、wp-config.php で WP_CONTENT_DIR, WP_CONTENT_URL を定義してやると、その内容に従います。
残念ながら、現在はまだ多くのプラグインが ABSPATH/wp-content/plugins にインストールされていることを決め打ちに作成されているので、移動してしまうと不具合が起きることが多いですね。
確かにlilyfanさんのおっしゃるとおり
コードをよく見たら分かりますけど、2つめの WP_CONTENT_URL の定義は、「まだ WP_CONTENT_URL が define されていないとき」のもの (デフォルト定義) です。なので、wp-config.php で WP_CONTENT_DIR, WP_CONTENT_URL を定義してやると、その内容に従います。
しかし、これを変更できるとすればwp-config.phpだけですよね。
my-hacks.phpが出現するのはこの後ですし、当然プラグインでは設定できません。
でも、そういう仕様に変更されたと言うことで現状は納得します。
ところで
wp-content ディレクトリーはユーザー独自のデーターが入っているので、それを ABSPATH の外に出してやると、CVS や Subversion などで WordPress 自体のアップグレードがやりやすくなりますから。
と言うことは、プラグインのディレクトリそのものが大幅に変更になる可能性があるんでしょうかねぇ。
(確かに、Geeklogのように公開領域と非公開領域を作って、セキュリティを高める(?)という方法も考えられない訳ではないけど)
「WordPress Plugins/JSeries」内のlilyfanさんのお作りなったプラグインの説明を読んでいて、この仕様が存在する理由がわかりました。
説明の中の「wp-content もしくは wp-content/plugins ディレクトリーを移設する場合」で理解することができました。
複数のwordpressを利用したいとき、プラグインをそれぞれにインストールするのではなく、どこか一箇所にまとめておけば、共通して使えるということですね。
そうなるとやはり、プラグインディレクトリの表示をフルパスで表示する必要がありますね。