kenjiroublog

カスタム投稿で「カテゴリー未選択」を防ぐPHPコード

未選択時に「デフォルトのカテゴリー」を自動セットする

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);
一覧へ戻る
一覧へ戻る

カテゴリ

タグ

アーカイブ