2022年03月27日
Actionフック:save_post
アクションフックの save_post は、投稿や固定ページが[公開]または[更新]された時にフックされます。
①WordPressのメタデータ(カスタムフィールド)の新設/更新
②投稿が更新された段階で、管理者のメールを送る
等で利用されます。
メモ
投稿や固定ページが[公開]または[更新]された時に実行されるフィルタフックもあります。
フィルターフック:wp_insert_post_data
上記は、入力された本文データをプログラムで取得し、変更する時に利用します。
サンプル
WordPressのカスタムフィールドは、投稿画面からマニュアルで作成/更新する事が可能ですが、操作が面倒等の問題があります。
例えば下記の様なカスタムフィールド作成したいとします。
そこで
①キーが設定されてない時は、キーと値を設定する。
②キーがあった場合は、値を更新する。
を実行させるプログラムは下記になります。
下記をfunctioa.phpに記述します。
function add_meta_key() { global $post; $id = $post->ID;// 現在のIDの抽出 $price = get_post_meta($id,'price',true); // price データの取得 if($price == '') update_post_meta($id,'price',100 ); // price の新規追加 else update_post_meta( $id,'price',$price ); // price の更新 $size = get_post_meta($id,'size',true); // size データの取得 if($size == '') update_post_meta( $id,'size',"80\n82\n84"); // size の新規追加 else update_post_meta($id,'size',$size ); // size の更新 } add_action( 'save_post', 'add_meta_key' );
■2~3行目:現在の投稿IDを取得しています。
■4~6行目:priceデータが空の時は新設、あった場合は更新をしています。
get_post_meta()でカスタムフィールドのデータを取得し、update_post_meta()でカスタムフィールドの新設/更新を行っています。
■8~10行目:sizeデータが空の時は新設、あった場合は更新をしています。
処理内容はpriceデータの処理と同様です。
参考情報
このサイトの事例では文書の中にタブ・ブロックを作成する時にカスタムフィールドを利用しています。