2010年01月05日
昨年末(2009年12月) WordPressの2.9がリリースされた。
画像の編集機能などが搭載されたものである。
しかし、これまでバージョンアップされる度に使っていたプラグインやテーマが使えなくなることが多かった。
そこで、現在開発中であったり、運用中のシステムのバージョンアップをすべきかどうかを確認する為、WP-2.9を試すことにした。
まずは、あすまる/BeLiveで開発したプラグインが正常に動作するかの確認を行い、その結果を記録する。
まずはそれからテストすることにした。
テストには、CPIのテストサーバにWP-2.9をインストールし、それぞれのプラグインを使用/停止させて問題ないかチェックする。
公開されているものについては、WP-2.9でも問題なく機能することを確認。
ただ、「Extra Widget Properties Set」のローカライズ(日本語化)が上手く行かないことについては調査が必要である。
また、まだ公開していないが、とても便利なプラグインも多々ある。
その中で、これまで開発しているうちに、共通化すべき機能であるが、それだけでプラグインを作るほどのものでないものを「あすまる専用プラグイン」として、蓄積している。
まずは、この「あすまる専用プラグイン」からテストを行った。
その結果、主要な機能の確認だけだが、WP-2.9でも問題なく動作した。
そのほかにも、未公開ではあるが、画期的な機能を持つプラグインがいくつかある。
それを確認したのだが...ある重大な問題にぶつかってしまった。
それを解決する為には、どうしてもWPのソースを改良するしか手立てはないものであった。
画像の編集機能などが搭載されたものである。
しかし、これまでバージョンアップされる度に使っていたプラグインやテーマが使えなくなることが多かった。
そこで、現在開発中であったり、運用中のシステムのバージョンアップをすべきかどうかを確認する為、WP-2.9を試すことにした。
まずは、あすまる/BeLiveで開発したプラグインが正常に動作するかの確認を行い、その結果を記録する。
〜 公開しているプラグイン 〜
現在、BeLive名義で公開しているプラグインがいくつかある。まずはそれからテストすることにした。
テストには、CPIのテストサーバにWP-2.9をインストールし、それぞれのプラグインを使用/停止させて問題ないかチェックする。
- 自動整形を解除するプラグイン「WP-UnFormating」
→ ○自動整形の解除、PHPコードを含む置換 ともに問題なし。 - PHPのPearのパスを追加する「WP-Pears」
→ ○sample.phpのインクルードを行ったところ、問題なし。 - iniファイルを利用できるようにする「wp-IniFileLoad」
→ ○sample01.ini〜sample03.iniを呼び出す。問題なし。 - 各サイドバーWidgetにCSSクラスやアクセス権など、新たな属性を追加する「Extra Widget Properties Set」
→ △機能的には問題なし。但しローカライズ(日本語化)がされない。
公開されているものについては、WP-2.9でも問題なく機能することを確認。
ただ、「Extra Widget Properties Set」のローカライズ(日本語化)が上手く行かないことについては調査が必要である。
〜 あすまる独自のプラグイン 〜
あすまるでは、各クライアントからの要望に応じ、そのシステム専用のプラグインを作成している。また、まだ公開していないが、とても便利なプラグインも多々ある。
その中で、これまで開発しているうちに、共通化すべき機能であるが、それだけでプラグインを作るほどのものでないものを「あすまる専用プラグイン」として、蓄積している。
まずは、この「あすまる専用プラグイン」からテストを行った。
その結果、主要な機能の確認だけだが、WP-2.9でも問題なく動作した。
そのほかにも、未公開ではあるが、画期的な機能を持つプラグインがいくつかある。
それを確認したのだが...ある重大な問題にぶつかってしまった。
それを解決する為には、どうしてもWPのソースを改良するしか手立てはないものであった。
〜 未公開プラグイン「Profile Plus 2」 〜
このプラグインは、名前に2とついている通り、「Profile Plus」という BeLive製プラグインをバージョンアップさせたものである。機能的には問題なく使えるが、もう少し使い勝手を精査したいので未公開としている。
ちょっと、「Profile Plus」について、どのようなプラグインであるか触れておく。
WordPressには、ユーザ属性を「usermeta」で格納しておくことができる。
しかし、管理画面の「ユーザの編集」や「プロファイル」ページには、その編集機能がない。
また、「usermeta」を利用するための関数は用意されているが、ガシガシにコードを書かないと使えない。
ユーザ情報であるから、セキュリティ上の利用制限は仕方ないが、使い勝手が悪すぎる。
たとえば、ユーザIDを知りたいけど、プロファイルページには表示されない。
(確認する方法はあるけど、結構面倒)
たとえば、住所欄を増やしたいけど、アクションやフィルタを使って追加しなければならない。
など(確認する方法はあるけど、結構面倒)
たとえば、住所欄を増やしたいけど、アクションやフィルタを使って追加しなければならない。
そこで「Profile Plus」では、ユーザ属性の項目を簡単に追加できるようにし、プロファイルページから編集可能にした。
そして「Profile Plus2」で、より高度に使えるように、ユーザ属性の項目は設定ファイルとして、権限制御などもできるようにした。
そのほか、なぜか標準の関数ではない、「ユーザ毎のコメントリスト」の関数など、ユーザの属性に関わる関数を拡張している。
(といっても、セキュリティに影響しないように)
さて、この「Profile Plus2」をWP-2.9でテストした。 → ○問題なし。
こちらは、ローカライズ(日本語化)も問題なくされていた。
〜 未公開プラグイン「Common Templates」 〜
このプラグインは、とっても重要なプラグインである。このプラグインについては、以前「【開発雑記】魔法カードのようなプラグイン」で触れたが、見た目に地味であるが効果は絶大である。
今回、WP-2.9では、「Common Templates」の機能の一部と似た機能が追加された。
それは、「カテゴリスラグやページスラグ毎のテンプレートファイルを定義できる」である。
WP-2.8.6までは、カテゴリのページや固定ページのテンプレートをIDでは定義できるが、スラグ(名前)で定義することはできなかった。
しかし、IDでの指定は実に使い勝手が悪い。
たとえば、開発/ステージングのWPと本番のWPを用意した場合、カテゴリIDやページIDをそろえることは難しい。
(実は、「Extra Widget Properties Set」も同様の理由で生まれた)
それがスラグで定義できれば、開発/ステージングのWPと本番のWPでファイル名を書き換えることなく、使える。
その機能がWP-2.9から追加された。
でも、「Common Templates」はもっと使いやすくしてある。
WP-2.9のスラグ対応は、カテゴリ/固定ページ/タグ/タクソラミーのみである。
それに、カテゴリや固定ページについては、階層化できない。
たとえば、「製品(products)」ページの子ページ「A」と「サービス(service)」ページの子ページ「A」は同じテンプレートファイルを使用する。
「Common Templates」では、同じ「A」というページでも、「製品(products)」子ページと「サービス(service)」の子ページは分けて定義できる。
また、「製品(products)」ページの子ページが共通のテンプレートを必要とする場合は、「製品(products)」ページで定義すればよいようにしている。「Common Templates」では、同じ「A」というページでも、「製品(products)」子ページと「サービス(service)」の子ページは分けて定義できる。
これは、カテゴリにおいても同様である。
また投稿記事も、カテゴリスラグでテンプレートを定義できるようにしている。
そのほか、著者別ページも
「Common Templates」には、そのほかに重要な機能を持っている。
それが「選択可能なページテンプレートを追加する。」機能である。
WordPress標準の機能では、選択可能なページテンプレートは利用中のテーマ内のみである。
「Common Templates」では、そのほかに共通テーマやプラグイン内で追加できるようにしている。
そうすることで、テーマが変わっても共通で使いたいテンプレートや特殊機能のテンプレートを選択できるようにしている。
たとえば、ページの階層上、どうしても同じページを用意したいとき、リダイレクトするテンプレートがあれば便利である。
そんな機能も「Common Templates」は実現している。
〜 WP-2.9で閉め出された! 〜
しかし、この「選択可能なページテンプレートを追加する。」機能がWP-2.9では使えないことが判明。原因は、wp-admin/includes/theme.php の関数「get_page_templates」にあった。
これまでのWordPressは、定義されたテンプレートファイルのリストはそのまま「ページを編集」のテンプレート欄に追加していた。
しかし、WP-2.9から「don't allow template files in subdirectories(訳:サブディレクトリ内のテンプレートファイルは許可しない)」というコメントとともに、別ディレクトリ下のテンプレートファイルは全て排除されるようになっている。
たぶん、これはテーマディレクトリ内に一時置き用のディレクトリを作った場合、それを見に行ってしまうのを避けるためだろう。
しかし、そのためだけに選択されているテーマ以外のディレクトリ下のページテンプレートは排除されてしまう結果となった。
せめて、この仕様にする場合、フィルタを追加してもらいたかった。
しかし、現状はフィルタが用意されていないので、選択中のテーマディレクトリとスタイルディレクトリのみである。
今のところ、WP-2.9.1の中にも追加はされていない。
たぶん、開発チケットとしても上がっていないだろう。
テンプレートファイルの選択可能なディレクトリを編集できるフィルタの追加を、WordPress本体に提案したいと思っている。
ただ、問題はそのことを英語でどう書けばいいのだろう。
tracのログインIDをもらえればなぁ
困った。
今のところ、WP-2.9は機能拡張が目的なので、WP-2.8.6を使用していても問題ないだろう。
しかし、WP-2.7.1の時のようにセキュリティホールが見つかれば、WP-2.9.xにアップグレードせざるおえない。
今やらなければならない仕事が片づいたら、がんばって、英文の提案を書くとするかぁ。(いつのことになるやら)
(19:55)
この記事へのコメント
1. Posted by BlogPetのむータロー 2010年01月06日 14:16
MOOが手立てするの?
2. Posted by MOO@あすまる 2010年01月29日 11:57
> MOOが手立てするの
オフコース
オフコース