記事がHogeされたらHugaするMTのプラグインを作るときに。

| コメント(0) | トラックバック(0)

ハマりがちな罠。Facebookとかで既に書いたんだけど。

こういうの、よく作るよね。「記事が保存されたとき」をトリガーにして動作させるプラグイン。MTに限らないけど、WordPressだったらなんだ、フックっていうんだっけ。MTならコールバック。

以下のような実装が必要な時に使います。

  • 記事がポストされたらTwitterに投げる(FacebookでもWeiboでも何でもいいけど)
  • 記事が公開されたらメールで通知を送る
  • 記事が更新されたら関連するアーカイブを再構築する

ハマりがちな罠は、2点

この手のを作る時にいつもハマりがちな罠があるので、共有しておきましょう。こんなのいっぱい書いてんだから。

  1. 新規記事を作成、下書きで保存した時とかにも走る(無駄な処理が走る)
  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東京なんか誰が行くか(嘘だよ)。西日本で盛り上げようぜ。

トラックバック(0)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/840

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2014年5月30日 15:24に書いたブログ記事です。

ひとつ前のブログ記事は「JavaScript製のWebベースエディタ「Ace」が良さげ。」です。

次のブログ記事は「MT6のDataAPIのエンドポイントを作ってみた(アイテム関係)。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6