【WordPress Plugin】cformsII が返ってきた

cformsIIがプラグインディレクトリに戻ってきています。
http://wordpress.org/extend/plugins/cforms/

フォームデータをDBへ保存する機能を持ったフォーム生成プラグイン。
以前は日本語環境では難ありで、そのまま使うとSubjectや送信者名が文字化けする確率が高く、使用するにはプラグインファイルをいくつか書き換える必要がありました。

cforms Ⅱ が日本語に対応

現在ではカスタマイズなしに使えます。

プラグインディレクトリから消えていたのはライセンスの問題らしいとネットのウワサで聞きましたが、復帰してくれて喜ばしい限りです。

ただ、良くわからないのがプラグインディレクトリにホストされているバージョンは10.1なのですが、Plugin Homepage のバージョンは11.1と異なっていることです。

cformsが多機能ということはよーーく分かっているのですが、ちょっと気になることが・・・
cformsはWordPressが用意している関数群をあまり使わず、オリジナル関数を使う傾向が強いこと。
wp_mail使っていれば文字化けの問題も起きなかったのでは、と思わずにいられません。

cforms Ⅱ が日本語に対応

WP Plugins の cforms が日本語に対応していました。
あっちこっちハードコードされている記述を修正しないと日本語対応のメールが送信できなかったのが、修正しないで送信できるようです。

どのバージョンからかは定かでは無いですが、10.5以降であれば良さそうです。

大幅なコードの見直しが行われており、ハードコードされていた記述はクラス参照に書き換えられていました。
mbstring関数が存在すれば…というようなif分岐が使われていて、問題なく日本語が送信者、タイトル、本文に使えるようです。

ただ、Wordpress のプラグイン管理からは外れているので使用するには少々勇気がいります。
なんでなんでしょうねー

コメント項目をカスタマイズしたりするのには便利に使えそうです。

WordPress cforms プラグインってイケテルの?

カスタムフォームを作れる cforms が人気のプラグインらしい。

確かにDBへデータを保存したりなかなか高機能。
日本語言語ファイルもあるのでかなり便利。

ただ日本語環境だといくつか問題がある。

メールSubjectはかなりの確率で文字化けを起こす。
コードが日本語Subjectを考慮していないのが原因。

送信者名は “ブログタイトル” になるようにプログラムされているが「ブログタイトル」に日本語を使うと文字化けを起こす。

メール本文は WordPress の charset になるので UTF-8 になる。
今はUTF-8でメールを送信してもほとんどのメーラーは問題なく受信できるので、まっイイカとあきらめる。

メールSubjectの文字化けはコードを修正しなければならない。

// lib_aux.php
function encode_header ($str) {
	$x = preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
 
	if ($x == 0)
		return ($str);
	return mb_encode_mimeheader($str,'ISO-2022-JP');
}

関数 encode_header を修正した。
マルチバイトに対応していない部分を全て削除した。
セキュリティ面にどんな影響が出るのか読めない。

送信者の文字化けは

$frommail = '"'.get_option('blogname').'" <wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])) . '>';

を下記のように修正した。

$frommail = '"'.mb_encode_mimeheader(get_option('blogname'),'ISO-2022-JP').'" <wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])) . '>';

ただ、このコードあっちこっちにハードコードされているのでいちいち修正するのが面倒くさい。
せめて関数化してくれていると良かったのに、と思ったりする。

メール本文の文字コード指定もあっちこっちにハードコードされてたりして、イタダケナイと思う。

アップデートも頻繁に行われ、Wordpress のバージョンアップにもいち早く対応しているなど、高機能のプラグインをメンテナンスし続けてくれて感謝!
2バイトな(UTFなのでマルチバイトって言った方がよいのかな?)日本語なんて知らない人が作っているからしょうがないよネな、良くある話。