web関連

【wordpress】新規投稿したときに投稿のカスタムフィールドに初期値を自動入力

2020/10/14

カスタム投稿のカスタムフィールドに毎回決まった値を入れるの面倒だから新規で作成したら自動で初期値が入らないかどうか調べた時の備忘録

アクションフック「save_post」使います

save_postは投稿や固定ページが作成または更新されたとき実行されるアクションだそう

今回はカスタム投稿「study」で新規投稿を作成したときにカスタムフィールド「article_link」に初期値として指定のURLを自動で設定するコードを作ってみた

function my_hook( $post_id, $post, $update ) {
  if($update == false) {// 新規投稿のみ
    if ( get_post_type( $post_id ) == 'study' ) { //カスタム投稿studyの投稿の時
      update_post_meta( $post_id, 'article_link',  "https://www.yahoo.co.jp/" );
    }
  }
}
add_action( 'save_post', 'my_hook', 10, 3 );

save_postは$post_ID(投稿ID)、$post(投稿データ)、$update(既存の投稿はtrue、新規はfalse)を関数側に渡すことができるみたいなんだけど、save_postって記事の新規作成と更新時に実行されちゃうので第三引数の「$update」がfalse(新規投稿)の時のみに初期値が出力されるようにしないと更新時に初期値に上書きされちゃうみたい

update_post_meta()は指定した投稿に存在するカスタムフィールドの値を更新する関数

初めてフック周り調べたんだけど、関数側の引数って何を指定すればいいんだろう?って思ってたらフックごとにパラメーターがあってそれを使いたかったら引数に設定するんすね知らんかった