カスタムフィールドの自動更新

独自の関数をフックしてカスタムフィールドを更新しようとする際、適切なフックを選ばなければいけません。

例えばwp_insert_post_data内ではupdate_post_metaは使えません。(ここでupdate_post_metaの処理が行われた後もう一度更新が行われるので無効になってしまいます。)

function update_hoge($data){
  global $post;
  $post_id = $post->ID;
  update_post_meta($post_id, 'hoge', 'hogehogehoge');

  return $data;
}

add_filter('wp_insert_post_data', 'update_hoge', 99, 1);

以下のように、update_post_metaはアクションフックwp_insert_postの中で用いると無効になることなくカスタムフィールドを更新することができます。

function update_hoge($post_ID,$post){
  global $post;
  $post_id = $post->ID;
  update_post_meta($post_ID, 'hoge', 'hogehogehoge');
}

add_action('wp_insert_post', 'update_owner_latlng_by_address');