Yuriko.Net 個別記事
2008-10-02

WordPress メール投稿プラグイン Ktai Entry 0.8.8 リリース
WordPress 用メール投稿プラグイン「Ktai Entry」のバージョン 0.8.8 をリリースいたします。変更点は以下の通りです。
- ページキャッシュを行うプラグイン (WP-Cache, WP Super Cache) がインストールされている場合、「POP3 取り込み間隔」が「しない」の設定では、外部メールボックスを読み出すトリガーとなるスタイルシートが出ないようにしました (バージョン 0.8.7 では表示されていました)。
- 外部メールボックスを随時読み出す方式の場合、絵文字が使える状況 (au やウィルコムから送信していたり、ドコモから Gmail に送ったり等) でメールボックスに2通以上メッセージが溜っているとき、PHP エラーが発生して処理が中断してしまう不具合があったのを修正しました。
- バージョン 0.8.6, 0.8.7 で、投稿日時を添付写真の撮影日時として指定する機能 (DATE: コマンドで数字を指定) が効かなくなっていた不具合を修正しました。
- RFC2047 違反の日本語添付ファイル名をうまく読み取れるようにしました。Outlook Express や Gmail などで日本語添付ファイル名を使うと、本来使うべき RFC2231 ではなく RFC2047 に違反した独自のメール形式になっているため、以前のバージョンではうまく抽出できませんでした。
- WordPress ME 2.1.x において写真等を添付した場合、WordPress のバグにより「添付ファイルが見つかりません。」という文字列が挿入される現象を回避するようにしました。
- PHP 5.0.x 系統では動作していなかった不具合を改善しました。
今回もバグ修正です。比較的大きいバグが改修されていますので、当該する問題に悩んでいた方はぜひともアップデートをお願いいたします。不具合が多数見つかってしまったため、新機能を盛り込むのは先送りしました。今度こそ、新機能を入れてバージョン 0.9.0 を出したいと思います。
あと、「エラーメッセージが謎」ということで困っている方がおられたので、Ktai Entry のエラーメッセージ一覧をドキュメント化して添付しました。
Yurikoさん、
紅玉です。投稿受付アドレスをもう一度設定し直しましたら、エラーなく動くようになりました。お騒がせして申し訳ありません。エラーメッセージのドキュメント化していただき、ありがとうございます。さっそく新バージョンも使わせていただきます。
携帯メール記事投稿系をVer0.88へバージョンアップ!
このブログの携帯メール記事投稿系の制御を行っているプラグイン
http://www.yuriko.net/arc/2008/10/02/ktaientry088/
バージョンを0.86 -> 0.88に
上げましたです
大き目の不具合の修正が入ったみた…
こんにちわ!いつもお世話になってます。
「Ktai Entry」のカスタマイズについてなのですが、
1,添付した画像をリンクなしで表示するようにしたい。
2,複数の画像を添付した時に二枚目以降を縦並びになるよう下に回り込ませたい。
ということに悩んでおります・・・「独自フィルターフック」などの項目も読んだのですかスキル的に・・・
よろしければ解決方法を教えてください。よろしくお願いします。
しげるさん:
1. ですが、元画像が小さい場合はリンクしません (WordPress がサムネールを作らないぐらいのサイズ、デフォルトは 150×150 未満)。逆に言うと、WordPress の設定値を変更して、サムネールサイズを大きくしてしまえばよいです。
もしくは、独自フィルターフックを使って a タグの出力部分をいじればいいんですが、これが難しいとなると、設定値を変更する方法で対処してください。
2. は、画像同士の間に <br /> を入れなければなりません。これも、独自フィルターフックを使えば可能なのですが、それが困難ならば、がんばってスタイルシートで処理することになります。画像サイズが一定ならば、class=”photo” に対応するスタイルの width を画像サイズより一回り大きい程度に固定させてしまえば (width:180px とか) 、画像が横に並ぶことはありません。
画像を含む HTML 出力をもうちょっと簡単にいじれるようにしたいのですが、なかなかうまい実装方法が思いつかず、現状は「独自フィルターフック」のみとなっています。もうしばらくお待ちください。
早速の回答ありがとうございます。
「2」についてはスタイルシートで解決することができました。
「1」は、サムネールサイズを大きめに設定したのですが、どうしてもリンクになってしまいます。
そこで「独自フィルターフック」での解決方法をお教え願えないでしょうか?
「1」「2」と両方教えていただきたいです。
お忙しいところ申し訳ありませんがよろしくお願いします。
登録されていないメールアドレスからでも
投稿用アドレスにメールを送れば表示できるようにしてみたいのですが
どのようにカスタマイズすれば良いのでしょうか?ご教授いただければ幸いです。
パック満さん:
技術的には可能ですが、このような設定はおすすめしません。もしスパムが着信してもそのままウェブログに掲載されてしまうからです。スパムが WordPress の登録ユーザーのメールアドレスで発信されることは少ないため、「登録ユーザーのみ投稿可能」という制約がスパム対策の1つとなっています。
具体的な方法としては「投稿許可アドレスを別途定義する」の方法を流用します。メールアドレスが登録ユーザーのものであれば
$user_id
に何か値が入っていて、そうでない場合は 0 となります。つまり、$user_id
が 0 の場合、適当なユーザー ID に変更するというロジックで OK でしょう ($authors
配列は作らなくてよい)。このカスタマイズをする場合、よほど投稿受付アドレスを、よほど複雑なものにするとか、定期的に変更するとかのスパム対策が必要です。
ゆりこさんありがとうございます。
丸一日いじくり倒してみたのですがさっぱりわからず困っていたので助かりました。
本当に助かります。
お初にお目にかかります。
知り合いのブログをwordpressにて管理していて、Ktai Entry, Ktai Styleともに
重宝させて頂いております。
1点ご質問ですが、Ktai Entryにて画像付きでメールを投稿すると、
<a href=’htp://xxx.xx/xxx.jpg’ title=’xxxxx’>
<img src=”htp://xxx.xx/xxx.jpg” width=”120″ height=”160″ class=”attachment-medium” alt=”xxx.jpg” />
</a>
上記の様に、<a hrefの部分がシングルコーテーションで括られてしまいます。
使っている他のプラグインの使用上、この部分をダブルコーテーションに変更したく、
昨日からファイル本体はもちろん、Yurikoさんのサイトなどを見渡して格闘したのですが
どのファイルのどの部分を変更してよいのかわかりませんでした。
自分の知識の乏しさを情けなく感じるばかりです。
忙しい中、お手数かけてしまいますが、もしよければ変更方法を教えて頂けませんでしょうか。
よろしくお願いします。
hico さん:
これは WordPress の
wp_get_attachment_link()
関数が出力しているものです。 したがって、修正するには WordPress 自体の改造が必要になってしまいます。この出力は、独自フィルターフックの image_link を利用すれば手を加えることができるので、シングルクォートをダブルクォートに変更するフィルター関数を作ればよさそうです。しかし、単純にstr_replace()
を使うのは問題があります (エスケープされたシングルクォートがあったり、ダブルクォートがあったりするとまずいため)。よって、一番いいのは、使っている他のプラグインの作者に「シングルクォートにも対応してください」とお願いすることです。なんせ WordPress が出している HTML ですから、対応していないそのプラグインが悪いのです
まあ、シングルクォートを使ってしまう WordPress がひどい、という考えもありますが。
ゆりこさん
丁寧なお返事、ありがとうございました。
なるほど、wordpress側の仕様なのですね。勘違いしてしまっていて申し訳ありませんでした。
実は対象のプラグインはwp_lightboxだったのですが、素直に単語で検索をすると
同じ症状で悩んでいる人と、それに詳しくお答えになっているゆりこさんの
記事がヒットしましたので、それを参考に修正しました。
具体的には、下記の記事を参考にしました。
WordPress Plugins/JSeries ≫ Ktai Entry よくある質問と答え
ちゃんと、<?php 〜 ?>で囲みました^^
オフィシャルのQ&Aを見逃していたとは、本当に顔が赤くなるほど恥ずかしい限りです・・・。
貴重な時間を使わせてしまい、申し訳ありませんでした。
また、お答えになって頂き、本当にありがとうございました。
今後もゆりこさんのプラグインを愛用させて頂きたいと思います。
失礼します。
WPMU2.3.1で使用中です。
今まで出ていた不都合は、全くありません。問題なしです。
ありがとうございます!!
ゆりこさん、こんばんは。
メールがうまく送れませんでしたので、こちらにコメントさせて頂きました。
Ktai Entryの導入させて頂いた際、気付いた点が有りましたのでご報告致します。
QandA(http://wppluginsj.sourceforge.jp/ktai_entry/qa/)の「VGA 以上のサイズなら画像を
右回転させたい」のコードですが、先頭のfunctionが抜けているようです。
このままコピペするとエラーを吐くので導入の際には皆さんお気付きになるかとは思いますが、
一応ご報告させて頂きました。
KURO さん:
ありゃ、確かに抜けてますね。附属ドキュメントの Q_and_A.ja.html も同様です。ウェブ上のドキュメントはすぐに直したいと思いますが、附属ドキュメントについては、次回アップデートでの修正になりますね。WordPress 2.7 では微調整が必要っぽいので、そのときに 0.8.9 を出す予定です。
お世話になります。
この度携帯でWordPressに投稿を考え、こちらのプラグインを使わせて頂いています。
WordPress Plugins/JSeries » Ktai Style (携帯対応プラグイン)を熟読して導入したのですが、以下のような現象が発生しています。
おそらく、私の導入の仕方が問題と思うのですが、少しお時間があればご教授ください。
環境
外部メールボックスを用意
現象
管理画面で、手動で取り込むと、WordPressに反映され、メールボックスも空になります。
しかしながら、15分の設定を何時間経過しても自動ではWordPressに反映されません。
トリガーとして、何度もアクセスしても同じです。
クーロンとか常駐についての記述はなかったので、何もしておりません。
(これが私の勘違いでしょうか)
サーバーは”をかもと師匠”と同じSAKURAです。
”をかもと”さんに聞こうと思いましたが、こちらが開発者だと最後に明記されていましたので、お時間があるときにお願いできればと思いまして・・
来年からは、モブログとWordPressで頑張っていく環境なので、是非にでもこのプラグインを導入したいのです。
大変お手数をかけますが、よろしくお願いします。
あらら・・・このメールを書いた後、確認したら投稿バッチリでした。
f(^−^;ポリポリ
大変申し訳ないです。
うまく投稿されていました。
申し訳ないです。
色々ありがとうございました。
少し疑問なんですが、何度自分でアクセスしてトリガーを与えても、WordPressに投稿が反映されませんでした。
もしかしたら、管理者以外がアクセスしたときに、スクリプトが動作するのでしょうか?
お時間があれば、ご教授ください。
J君さん:
外部メールボックスへのアクセストリガーは、特別なスタイルシートを読み出すことによって行なっています。したがって、使用しているブラウザーが、そのスタイルシート (の出力結果) をキャッシュしていれば、再アクセスしないため、結果として投稿処理が行なわれないことになります。
自身で何回もアクセスする場合は、都度、ブラウザーのキャッシュをクリアすることをおすすめします。
どうやってトリガーを与えるのかが?わかりません。
サーバーに常駐するか?それなら理解できます。
起動がないと、動かないと思うのです。
不思議です。
18、19は、よかったら削除をお願いします。≦(._.)≧ ペコ
勉強になりました。
>特別なスタイルシート
J君はいつもクッキーとかキャッシュは全てをクリアして、毎回アクセスしています。
その影響かもですね!
いずれにしても、早い対応、感謝です。
今度 2.7 へアップしてもOKでしょうか?
このプラグインがないと、・・・
駄目ですね!
編集は実行です!
このプラグインはすごいです。
ありがとうございます。
今後は、モブログでアクセスしますね!
携帯冥府三菱のスライドで明日試します。
(‘-’*)アリガト♪です。
色々ありがとうございました。
自分なりに検証できました。
色々ここで書いたことは、この記事を含めて、よかったら削除して下さい。
半日検証に時間を費やしました。15分をテストしまくったのがいけませんね。
よく考えればわかることですよね。
申し訳ありませんでした。
このプラグインは、素晴らしいです。
来年は、このプラグインが活躍します。
ありがと♪o(*⌒▽⌒)ツです。
本当にありがたいです。
J君さん:
どうしましょう? 消さなかったとしても、わたしはまったく気になりません。J 君さんが恥ずかしいだけですよね
どうしても、という要望があれば考えますが、残していても、そんなに気にすることじゃないと思うので、このまま、とさせてください。分からないことを質問するのは前向きな姿勢であって、それ自体は好ましいことですし。
手元で試験した感じでは、投稿自体は可能だと思われます。2.7 で導入された「大サイズ」の設定ができないぐらいでしょうか。
テーマの
wp_head()
というテンプレートタグを実行したとき、一定時間を経由していれば、Ktai Entry が ktai_entry/retrieve.php をソースとするスタイルシートを挿入します。このスタイルシートは実態は PHP の実行ファイルで、ブラウザがこのスタイルシートを読もうとしたとき、外部メールボックスの読み出し操作をします。retrieve.php をソースとするスタイルシートをめったに挿入されないため、ふだんは存在に気がつかないと思います。詳細は Ktai Entry のソースをじっくり読んでみてください。またもや、J君に”師匠”ですね。
トリガーもわかったので、何故??は解決しました。
削除の件は、嬉しい限りです。
私が、おバカな質問をしても、ちゃんと即効で応えてくれる。。。
それが嬉しいです。
”をかもと師匠”は言っていました。
”私はJ君のためでなく自分の勉強だ”と師匠が言うのです。
なるほど・・と思いました。
でも、こんなにわかり易く丁寧に教えて下さる方は”師匠”です。
本当にありがとうございます。
また質問してもイイでしょうか?
最新版を導入しました。
ありがとうございます。
本当に助かります。
雲のように、わからないことでも、ちゃんと教えていただき感謝です。
何か問題があったら、何故?といつも考えてしまうのです。
質問は”をかもと”さんが初めてだったのですが、今回は、こちらの”yuriko”様だったので、質問をした次第です。
昔から質問については、滅多にしなかったのですが・・ここにきて、J君にも師匠が・・(;>_<;)ビェェン
嬉しい限りです。
これで2人の師匠ができました。yuriko師匠でいいでしょうか?
調べて、調べつくして、しかしわからない場合だけ質問をしましので
よろしくお願いします。
J君さん:
わたしをどう呼ぼうが自由ですが、弟子入りするのであれば、厳しい修行になることを覚悟してください
いつもありがたく使用させていただいております。
さきほど気づいたのですが、
投稿許可アドレスを別途定義するためにWEB記載どおり(コピペ)でmy-hacks.phpに追記したところエラーがでました。
ので下記のように書き換えたところ、うまく投稿可能となりました。
WEBの訂正を検討ください。
×
return isset($authors[$address] ? $authors[$address] : $user_id;
○
return isset($authors[$address] )? $authors[$address] : $user_id;
以上
frogger さん、情報ありがとうございます。
ここは以前気がついて直したつもりだったのですが、附属ドキュントだけ直してウェブサイトの方はそのままだったかもしれません。ご指摘ありがとうございました。
こんばんわ、はじめまして。
こちらのプラグインを利用しようとしたところ、
プラグインを有効にする際に下記のエラーがでてしまいます。
重大なエラーを引き起こしたのでプラグインの有効化はできませんでした。
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /home/(パス省略)/ktai_entry.php on line 68
なにか設置の仕方がまちがっているのでしょうか…
アドバイスいただけますと幸いです。
よろしくお願いいたします。
ふぉんさん:
サーバーの PHP が 4.x 系統ですね。Ktai Entry は PHP 5.0 以降を必要とします。サーバーによっては、利用する PHP のバージョンを 4.x と 5.x から選択できる場合がありますので、その場合は PHP 5 に切り替えてみてください。切り替えできない場合は、Ktai Entry の使用をあきらめるか、PHP5 が使えるサーバーに乗り換えるかになります。
ゆりこさん、
さっそくのご返信ありがとうございました!
そういう意味のエラーだったんですね、初歩的ですみませんでした。
PHP5.x系にできないかしらべてみます、ありがとうございました!
メールでの投稿機能、とても重宝しています。素敵なプラグインをありがとうございます。
質問なのですが、メールからの自動投稿では投稿のパーマリンクを「日付と投稿名」としていても、投稿名には通番のようなものが入ってしまいます。
(管理画面からの投稿では投稿欄に投稿名を入れると勝手に設定されるのですが…)
これはWordpress(2.7を使用しています)側に起因する事象のような気がしているのです、本プラグインで対処できることがもしあればご教示いただければ幸いです。
うっせーさん:
これは Ktai Entry の仕様です。いちいち投稿スラッグを指定せずに済むよう、投稿名 (投稿スラッグ) は「時分秒を繋げた6ケタの数字」を設定しています。変更したいときは、投稿時に SLUG コマンドを使ってみてください。
こんにちわ。便利に使わせていただいています。
WordPress 2.7では問題なかったのですが、WordPress MU 2.6.5にしたらちょっとした問題が出ています。既知の問題でしたらごめんなさい。
WordPress MUでユーザー3人、ブログ2つを用意しました。
user1: admin
user2: koizumi
user3: koizumi-ktai
blog1: admin
blog2: koizumi / koizumi-ktai
やりたいことは、ktai-entryをblog1では無効な状態、blog2では有効な状態で、blog2のユーザーkoizumi-ktaiで登録した携帯電話のメールからblog2へ投稿を行いたい、となります。
実際にプラグインをblog2だけで有効とし、携帯電話からメールを投げましたが、blog2に投稿されません。投稿の仕掛けは、自宅に設置したメールサーバー(postfix)から.forwardでinject.phpを呼び出して実行するようにしています。
メールサーバーのログを見ると、
postfix/local[2013]: 22FE0DA335: to=, relay=local, delay=12, delays=9.1/0.09/0/3.3, dsn=5.3.0, status=bounced (Command died with status 100: “/foo/bar/blog/wp-content/plugins/ktai_entry/inject.php”. Command output: The plugin is not activated.)
となります。
これ、blog1側のプラグインの設定でktai-entryが無効になっているため、と思われます。実際にblog1側でktai-entryを有効にし、koizumi-ktaiをblog1側の作成者として設定しておくと、問題なく投稿できます。
ちなみに、blog1でktai-entryを有効にし、blog2でも有効にした場合も、blog2のktai-entryは機能しません。あくまでもktai-entryはblog1の設定結果で動作しています。
postfix/local[28580]: C9B59DA31B: to=, relay=local, delay=9, delays=1.3/0.04/0/7.6, dsn=5.3.0, status=bounced (Command died with status 100: “/foo/bar/blog/wp-content/plugins/ktai_entry/inject.php”. Command output: You are not allowed to post.)
こうなります。プラグインは有効化されていて、メールアドレスは登録されているはずなのに、blog2の設定結果は無視されます。
問題のポイントは、
- WordPress MU
- 複数のblogがある
- 複数のユーザーがいる
- システム上、最初のブログでktai-entryが機能する
- システム上、2番目以降のブログではktai-entryが機能しない (設定を読み出していない?)
と考えられます。
これを、複数のblog、複数のユーザーで使えるようにするためにはどのような方法があるでしょうか? WordPress MUを見捨てずに(^^;)、ぜひご教示ください。
こいずみさん:
inject.php を呼び出す方法だと、そのままでは複数ブログに対応していません。随時 POP アクセスする方法ならば、ブログごとに retrieve.php を呼び出す URL が異なるため、どのウェブログが対象かの判別ができています。しかし、コマンドラインの場合、ブログを判別する材料がないため、何かデータを用意してやる必要があります。
inject.php を呼び出すときに引数として blog id を指定するようにして、inject.php で
$blog_id
を定義してやればよいかもしれませんが、wpmu-settings.php を見る限り、それではうまくいかない気もします。これはだいぶ研究が必要そうなので、時間をください。今すぐ可能な方法としては、inject.php をブログごとに複製して、wp-load.php を呼ぶ直前で、それぞれのブログに対応した$_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI']
をハードコードで定義してやる方法でしょう。ゆりこさま
素晴らしいプラグインを使わせていただいております。
今まで正常に動作しておりましたが、この度サーバーをDREAMHOSTに切り替えましたら以下のエラーが吐き出されました。
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /mnt/local/home/***/***/wp-content/plugins/ktai_entry/retrieve.php on line 40
ちなみにphpのバージョンはPHP Version 5.2.6となっております。
お忙しい中恐れ入りますが、ご教示よろしくお願いいたします。
キムさんこんにちは。
このエラーは 100% 確実に PHP 4.x で動作させたときのものです。retrieve.php を cron とかで動作させていますでしょうか。そうすると、Apache モジュールの PHP バージョンは 5.2.6 なものの、コマンドライン版の PHP バージョンが 4.x になっていると思われます。サーバー管理者に確認してみてください。
ゆりこさま
お返事ありがとうございます。
>retrieve.php を cron とかで動作させていますでしょうか。
はい。cronで実行させた時のエラーです。
WP管理画面→Ktai Entryオプション→「すぐにメッセージを読み出す。」を押した場合は正常に実行されます。
>コマンドライン版の PHP バージョンが 4.x になっていると思われます。
そうなんですね。確認してみます。
ご丁寧にありがとうございました。
ゆりこさま
その後色々と調べまして、Cronのコマンドを以下のように設定したら正常に動作しました。
/usr/local/php5/bin/php /home/***/***/wp-content/plugins/ktai_entry/retrieve.php
ありがとうございました!