新規投稿でデフォルトのタームを設定する(主にカスタムタクソノミーで)

WordPress
記事内に広告が含まれています。

カスタムタクソノミーを使用する際にうっかりタームの選択を忘れて投稿を保存しても、カテゴリーの「未分類」みたいに何か選択してほしい!場合に。

コード例は以下。標準の投稿を対象に、カスタムタクソノミー sector のターム brand をデフォルトにする例。

/**
 * 新規投稿でデフォルトのタームを設定
 */
function set_default_term_auto($post_ID) { 
    global $wpdb;
    // カスタムタクソノミー sector のタームを取得
    $terms_cur = wp_get_object_terms($post_ID, 'sector');
    // タームがなければ(新規投稿時は空)
    if (0 == count($terms_cur)) {
        // カスタムタクソノミー sector のターム brand を取得して
        $_term = get_term_by('slug', 'brand', 'sector');
        // デフォルトとして設定
        $term_default = array($_term->term_id);
        wp_set_object_terms($post_ID, $term_default, 'sector');
    }
} 
add_action('publish_post', 'set_default_term_auto');
// 標準の投稿の場合は publish_post
// カスタム投稿タイプの場合は publish_<カスタム投稿タイプ名>

カスタム投稿タイプでも使えるし標準カテゴリーのデフォルトを未分類(uncategorized)以外にする場合にも使えるはず。

タイトルとURLをコピーしました