Ktai Entry マニュアル

よくある質問と答え

Ktai Entry に関して、附属ドキュメントに掲載されていない疑問点やノウハウなどを掲載します。ここにない質問があれば、まず、附属ドキュメントをよく読んでみてください。それでも解決できなければ、作者にメールするか、WordPress 日本語フォーラム の「プラグイン」で質問してください。

インストール関連

プラグインを有効にすると "Fatal Error" になる
サーバーの PHP バージョンが 5.0.0 以降であるか確認してください。Ktai Entry は PHP 4.4.8 以前には対応していません。おそらく PHP 5.0.x, 5.1.x でも動作するはずですが、動作確認はしていません。もし動かない場合は PHP 5.2.x 系統にアップグレードしてください。
管理画面の設定をどう変更すればいいか分からない
管理画面の「メール投稿」での設定は変更しなくてもそのまま使えます。メールサーバーの設定さえきちんと行えばデフォルトで動くように設計されています。
外部メールボックスの読み込みを cron で行なわせたい
手動でメールボックス確認させる スクリプト retrieve.php をウェブ経由でアクセスする (wget コマンド等) 場合は _wpnonce 引数が必須ですが、コマンドライン版 PHP で retrieve.php を起動させる場合は不要です。このため、crontab は以下のように記述してください。なお、/PATH/TO の部分は適宜修正してください。
2,17,32,47 * * * * /usr/bin/php /PATH/TO/retrieve.php
※0,15,30,45 ではないのは、他の cron ジョブが使わなさそうな時刻にするためです。
※"retrieve" のスペルは間違えやすいので、十分注意してください。

仕様に関して

添付できる画像は何枚までか
スクリプト側では特に制限を設けていません。au 携帯は5枚まで、SoftBank 6-3 シリーズだと1枚だけなど、端末側の制約の方が大きいでしょう。ただし、大きい画像を複数枚添付すると、PHP のメモリ制限をオーバーして異常終了することがあります。PHP のメモリ制限は 32MB 以上にしておくことをおすすめします。(WordPress 2.5 以降は、自動的にメモリ制限が 32MB 以上に設定されます)
画像以外を添付できるか
現状では、JPEG, PNG, GIF 画像以外の添付には対応していません。動画の添付は将来のバージョンで検討します。
サーバーへの負荷はどれぐらいか
外部メールサーバーに随時アクセスする場合でも、今どきのサーバーならば、POP アクセスを5分間隔に詰めてもさほど負荷にならないはずです。投稿専用メールアドレスならば、基本的にメールボックスが空なので数秒でチェック終了します。しかし、他のメールと兼用しているメールボックスで、常に数千通ぐらい溜っている場合は、5分間隔だとまずいかもしれません。
メール着信時に投稿スクリプトを起動する場合は、CLI 版 PHP のプロセスが走るだけなので非常に軽いでしょう。
不許可アドレスからの投稿はどうなるか
不許可アドレスから投稿があった場合、以下のように処理されます。

問題が発生したときは

投稿処理がされない
さまざまな原因が考えられます。以下をそれぞれ確認してください。 原因が不明の場合、ktai_entry.php の 27,28 行目にある define('KE_LOGFILE', 'logs/error.log'); define('KE_DEBUG', TRUE); のコメントを外して詳細のログ記録を有効にしてみてください。これで問題発生個所が分かるかもしれません (ログは英文のみです。あしからず)。
画像が保存されない
uploads ディレクトリーのオーナー (所有者) および パーミッション (権限) を確認してください。WordPress が自動作成した場合、オーナーがウェブサーバー (www-data など) で、パーミッションは 757 もしくは 777 になっています。757 の場合、「メール着信したら投稿スクリプトを起動」方式ではスクリプトの実行ユーザーが HOME ディレクトリーのオーナーとなり、ディレクトリーのオーナーと異なるため、ファイルが保存できないことがあります。ディレクトリーの権限を 777 に変更してみてください。
動作ログに記録が残らない
define('KE_LOGFILE', 'logs/error.log'); のコメントを外して有効にした場合に動作ログが有効になりますが、パーミッションの設定によっては、ログが作られない場合があります。特に、外部メールボックス読み込み方式と、メール着信でスクリプトを起動する方式を併用している場合は、両者でプロセスオーナーが違うため、問題が起きやすいです (前者は Apache, 後者は HOME ディレクトリーのオーナー)。あらかじめ mkdir logs; chmod 0777 logs/ しておくのが無難です。
キーワードタグが重複されて生成された
WordPress のタグ機能にはバグがあり、タグ名から自動生成されるタグスラッグを別のものに変更したときに不具合があり、再度、同じタグ名 (で、自動生成されるタグスラッグを持つもの) が生成されることがあります。Ktai Entry のタグ入力機能でも同じ問題が発生します。これを避けるには、TAG: コマンドにおいて、タグスラッグを入力する必要があります。例えば、「変なモノ」タグに「funny」というスラッグを割り当てている場合、「TAG: funny」と入力しなければなりません。
また、ウェブログの文字コードが UTF-8 の場合、波ダッシュ (〜) を持つタグで問題が発生します。Windows で全角チルダ U+FF5E (~) を含むタグを作った場合、メールで入力した波ダッシュは U+301C の「〜」に変換されるため、違うタグと認識されて別のタグになってしまいます。

メール投稿に関するコツ

コマンドを単語登録する
カテゴリー指定コマンドや画像回転コマンドを、あらかじめ携帯電話で単語登録しておくと便利です。例えば、以下のような例が考えられます。
独自フィルター image_link を使えば、Ktai Entry を改造しなくても可能です。my-hacks.php に以下のコードを書いてください。
function ke_rel_lightbox($html, $id, $size) {
	if (preg_match('/rel=["\']/', $html, $match)) {
		$html = str_replace($match[0], $match[0] . 'lightbox ', $html);
	} elseif (! preg_match('/rel=/', $html)) {
		$html = str_replace('<img ', '<img rel="lightbox"', $html);
	}
}
add_filter('image_link/ktai_entry.php', 'ke_rel_lightbox', 10, 3);
投稿許可アドレスを別途定義する
ウェブログ登録ユーザーのメールアドレス以外から投稿を受け付けたいときは、validate_address フィルターを使うと可能です。my-hacks.php に以下のコードを書いてください。$authors 配列は、許可するメールアドレスと対応するユーザー ID を示すものです。適宜修正してください。
function ke_another_author($user_id, $address) {
	$authors = array(
		'foo@example.com' => 1,
		'bar@example.net' => 2,
	);
	return isset($authors[$address] ? $authors[$address] : $user_id;
}
add_filter('validate_address/ktai_entry.php', 'ke_another_author', 10, 2);