ブログとか

アクションフック「save_post」で公開時のみのカスタムフィールドの値を取得する裏技!

投稿日:2014-12-11 更新日:


WordPressってほんとよくできてますね。
いじればいじるほどすごいな〜と感心させられます。

今回は、アクションフック「save_post」で公開時のみのカスタムフィールドの値を取得する裏技を紹介したいと思います。

最初にアクションフックとは何ぞや!と思われた方は以下を参照下さい。

WordPressカスタマイズの幅が劇的に広がる、フィルターフックとアクションフックの使い方

まあ、簡単にいうと、「なにかの実行時に一緒に違うことをする」みたいなもんです。フック(引っかける)っていう言葉がわかりやすいですよね。

WordPressには膨大なフックがあり、その中でも投稿の「公開」などに実行されるフックが「save_post」なわけです。ただこのフック、只者ではありません。なんと...

更新や下書き保存、はてはゴミ箱にまで実行されてしまいます(>_<)

色々な所で使われているらしいsave_postフック君。できれば実行する範囲は限定したい!ということで「公開時」「予約投稿時」のみの処理を考えてみました。

[php] add_action(‘save_post’, ‘hoge’);
function hoge($post_id) {
//処理
if(!empty($_POST[‘publish’])){ //submitのキーがpublishのみ処理する
//カスタムフィールドの値を取得
$custom= $_POST[fields][field_1234567890];
//以降、色々と処理・・・
//カスタムフィールドの値を変更
update_post_meta($post_id, ‘fuga’, $custom);
}
}
[/php]

ポイントとしては、

[php]$_POST[‘publish’][/php]

でDB保存前の飛んでるsubmitの値を取得することですね。ちなみに、

キー = 値

publish = 公開

publish = 予約投稿

save = 更新

save = 下書き

が入ってます。あとはそれに合わせて if で条件分岐、煮るなり焼くなりすればいいわけです。この例ではキー publish の中になにか値が入ってれば処理するようにしました。すなわち、「公開」と「予約投稿」ボタンを押したときのみ!

ということです^^

-ブログとか

Copyright© 「勇唄〜ゆうた〜」 , 2017 All Rights Reserved.