WordPressで記事の投稿をトリガーにする
2015年5月22日
ちょっとハマったのでメモ
publish_postをフックする
wordpressで記事の投稿や更新をトリガーにして何か処理をさせたい場合、
通常、下記のような感じでアクションフックで「publish_post」というアクションをフックする。
function hogehoge() { //処理 } add_action('publish_post', 'hogehoge');
公開時と更新時を振り分けたい場合はこの辺を参考に。
WordPressで記事公開時と更新時のフックを使い分ける方法
ただこれだとカスタム投稿で動かない。
カスタム投稿の場合は「post_type」の部分をそれぞれのタイプ別に書き換えればいい。
例えばpost_typeが「news」とかだったら↓こんな感じ。
function hogehoge() { //処理 } add_action('publish_news', 'hogehoge');
ここまでは問題なくて、ハマったのはこの後。
予約投稿だとフックされない
てっきり「publish_post」でいけると勝手に思い込んでたけど予約投稿だとフックしてくれなかった。
お客さんに「簡単ですよ!」と言ってしまった手前
「やっぱりできませんでしたごめんなさい死んでお詫びします」とは言えない。
仕方なくちゃんと調べると予約投稿の場合は「publish_post」じゃなくて「future_post」らしい。
function hogehoge() { //処理 } add_action('future_post', 'hogehoge');
これで予約投稿でもちゃんと動いてくれた。
ノーマル投稿とかカスタム投稿の公開・更新時にも反応してくれるように
最終的にはこんな感じでアクションを全部書く。
function hogehoge() { //処理 } add_action('publish_post', 'hogehoge'); add_action('publish_news', 'hogehoge'); add_action('future_post', 'hogehoge'); add_action('future_news', 'hogehoge');
これて多分大丈夫。
後はもうやりたい放題です。