記事がHogeされたらHugaするMTのプラグインを作るときに。
公開日 : 2014-05-30 15:24:33
ハマりがちな罠。Facebookとかで既に書いたんだけど。
こういうの、よく作るよね。「記事が保存されたとき」をトリガーにして動作させるプラグイン。MTに限らないけど、WordPressだったらなんだ、フックっていうんだっけ。MTならコールバック。
以下のような実装が必要な時に使います。
- 記事がポストされたらTwitterに投げる(FacebookでもWeiboでも何でもいいけど)
- 記事が公開されたらメールで通知を送る
- 記事が更新されたら関連するアーカイブを再構築する
ハマりがちな罠は、2点
この手のを作る時にいつもハマりがちな罠があるので、共有しておきましょう。こんなのいっぱい書いてんだから。
- 新規記事を作成、下書きで保存した時とかにも走る(無駄な処理が走る)
- 再構築が無限ループに陥る(A→B→Aの再構築トリガーとか設定してしまうと...)
1つめの方は、要は元の状態と保存更新された状態を比較して、必要なときだけ処理が走るようにすればいいです。
プラグイン書いた。毎回書くのは無駄っちゅーもんで、コールバックのコールバックを発行するプラグイン(何だそれ)
https://github.com/junnama/mt-plugin-post-change-entry
必要な時にコールバックを発行するので、cmspostchange.foo のほうに実装すれば良い。
2番目の方は、MT->requestを使って同一リクエストの際は処理をスキップするようにすればいいです。
## 再構築時に
MT->request( 'rebuilt-ensry' . $obj->id, 1 )
## 次の実行時にチェック
if ( MT->request( 'rebuilt-ensry' . $obj->id ) {
return;
}
告知
来週の週末6月6日金曜日、MTのイベントで広島行きます。せっかくなので、初公開のネタを少し混ぜようと思う。よろしければお会いしましょう。MT東京なんか誰が行くか(嘘だよ)。西日本で盛り上げようぜ。