「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
エクスポートできるカスタムフィールドの型を追加する
拙作のGoogleMapsCustomFieldsプラグインに対して、「記事のインポート/エクスポートには対応していないのでしょうか」というご質問をいただきました。
GoogleMapsCustomFieldsプラグインに限らず、プラグインでフィールドの型を追加した場合、そのデータをエクスポートできるようにするには、Movable Typeのコアのソースコードを書き換えることが必要です。
書き換え方
カスタムフィールドの処理を見てみると、エクスポートの際に、エクスポートできるデータの型を制限する処理が入っています。
この部分を書き換えて、プラグインで追加したカスタムフィールドもエクスポートできるようにします。
書き換えるファイルは、Movable Typeのディレクトリ→「addons」ディレクトリ→「Commercial.pack」ディレクトリ→「lib」ディレクトリ→「CustomFields」ディレクトリにある「ImportExport.pm」です。
このファイルの60行目付近に、以下の部分があります。
「qw( ... )」の部分で、エクスポートできる型を指定しています。
my %allowed = map { $_ => 1 } qw( text textarea checkbox url datetime select radio );
この「qw( ... )」の部分に、プラグインで追加したカスタムフィールドの型を追加します。
GoogleMapsCustomFieldsプラグインの場合だと、以下のように、「qw( ... )」の部分に「googlemaps」を追加します。
qw( text textarea checkbox url datetime select radio googlemaps );
なお、インポートの際には、フィールドの型を制限する処理は行われていません。
エクスポート側の修正だけで動作しました。
ちなみに、拙作の数値型カスタムフィールドプラグイン(NumericCustomFields)のデータをエクスポートできるようにするには、「qw( ... )」の部分に、「ninteger」と「nfloat」を追加します。
中の人に要望
上で述べたように、プラグインでカスタムフィールドの型を追加した場合、現状ではコアのソースコードを書き換えないと、その型のデータをエクスポートすることができません。
それぞれのデータ型をエクスポートできるかどうかを、レジストリから読み込むように変えていただきたいです。