未選択時に「デフォルトのカテゴリー」を自動セットする
functions.phpに追加
function my_set_default_term_for_custom_post($post_id, $post) {
// --- 設定エリア:ここを書き換えてください ---
$target_post_type = 'xxx'; // 対象の投稿タイプスラッグ
$target_taxonomy = 'xxx-xxx'; // 対象のタクソノミースラッグ
$default_term_slug = 'cat-xxx'; // 自動設定したいターム(カテゴリー)のスラッグ
// ---------------------------------------
// 投稿タイプが一致するか確認
if ($target_post_type !== $post->post_type) {
return;
}
// すでにカテゴリーが設定されているか確認
$terms = wp_get_object_terms($post_id, $target_taxonomy);
// カテゴリーが空、かつ自動保存やゴミ箱への移動時でない場合
if (empty($terms) && !in_array($post->post_status, ['auto-draft', 'trash'])) {
// スラッグからターム情報を取得
$default_term = get_term_by('slug', $default_term_slug, $target_taxonomy);
if ($default_term) {
// タームを投稿に紐付ける
wp_set_object_terms($post_id, [$default_term->term_id], $target_taxonomy);
}
}
}
// save_post アクションフックに登録
add_action('save_post', 'my_set_default_term_for_custom_post', 10, 2);