ACFを使ってのサイト構築で、元の投稿のタイトルフィールドを使わずにカスタムフィールドからタイトルを自動挿入したいって時に使えるコード
// タイトルをカスタムフィールドから自動挿入
function lh_acf_save_post($post_id) {
if (get_post_type($post_id) == '■カスタム投稿名■') { //投稿タイプを確認
$new_title = '';
$new_slug = '';
$empty_text = 'unnamed'; //データがなかった場合の文字列
// 各ACFの文字列取得
$new_slug = get_field('■カスタムフィールド名■', $post_id ) ? get_field('■カスタムフィールド名■', $post_id ) : $empty_text;
$new_title = get_field('■カスタムフィールド名■', $post_id ) ? get_field('■カスタムフィールド名■', $post_id ) : $empty_text;
remove_action( 'acf/save_post', 'lh_acf_save_post' ); // ループ抑制のため既存のアクション削除
// 投稿データを更新
$post = array(
'ID' => $post_id,
'post_title' => $new_title,
'post_name' => $new_slug,
);
wp_update_post($post);
add_action('acf/save_post', 'lh_save_post'); // 保存
// 新規投稿(保存)の場合のURL取得
$_POST['return'] = add_query_arg('updated', 'true', get_permalink($post_id));
}
}
add_action( 'acf/save_post', 'lh_acf_save_post', 10, 1 );