X
  1. TOP
  2. 【WordPress】カスタム投稿でユーザーごとにタームの初期設定を変える方法
2024.06.18

【WordPress】カスタム投稿でユーザーごとにタームの初期設定を変える方法

WordPressのカスタム投稿で作成した際、投稿と同じようにカテゴリー(タクソノミー)の選択状態の初期設定ができると便利ですよね。
また、複数ユーザーで更新する場合、ユーザーごとに初期設定を変更したいと思うことも出てくるかと思います。
今回はそんな時に役立つ、カスタム投稿のタームの初期設定の方法と、それを応用したユーザーごとに初期設定を変更する方法をご紹介します。

事前準備

まず、今回ご紹介する方法ではタームのスラッグではなくID、ユーザーの設定もIDでの指定になるため指定する各IDを確認します。

タームIDの確認方法

設定をしたいタクソノミーのタームの編集画面を開き、URLを確認します。
/wp-admin/tearm.php?taxonomy...に続くtag_IDの数字がタームIDになります。

ユーザーIDの確認方法

左メニューから「ユーザー」を選択し、各ユーザー名から編集画面を開き、URLを確認します。
/wp-admin/user-edit.phpに続くuser_idの数字がユーザーIDになります。

※ログインしているユーザーはprofile.phpに飛んでしまいuser_idのパラメータがないため確認できないため、他のユーザーでログインして確認する必要があります。

タクソノミーの初期設定をする方法

カスタム投稿、タクソノミー、タームのそれぞれの設定ができたらfunctions.phpの中に設定書きます。

【今回の例の設定内容】
カスタム投稿タイプのスラッグ …blog
初期設定をしておきたいタクソノミーのスラッグ …content
初期設定にするタームID…1

function add_defaultcategory_automatically($post_ID) {
    global $wpdb;
    // 指定したタクソノミーに設定されているタームを取得
    $curTerm = wp_get_object_terms($post_ID, 'content');
    // ターム指定数が 0(未設定)の時
    if (0 == count($curTerm01)) {
        // 指定をしたいタームIDを指定
        $defaultTerm= array(1);
        // 指定したタクソノミーに指定したタームを設定
        wp_set_object_terms($post_ID, $defaultTerm, 'content');
    }
}
// 投稿する時に初期値を設定
add_action('publish_blog', 'add_defaultcategory_automatically');

4行目、10行目には初期設定をしておきたいタクソノミーのスラッグを設定し、8行目には初期設定にするタームIDを指定します。
そして、14行目に「publish_カスタム投稿タイプのスラッグ 」(今回であればpublish_blog)を指定します。

この設定をfunctions.phpに書くだけでタームを未設定のまま投稿してしまった時に自動で指定したターム(今回であればIDが1のターム)に振り分けられて投稿されます。
また、タームの指定数が0(未設定)の場合の処理となっているため、手動でタームを選択した場合には手動で設定したタームのみ選択されます。

※投稿時に処理がされるため、下書きの段階の画面などで設定したタームにチェックが入るというわけではありません。

ユーザーごとに初期設定を変える方法

先ほどの記述では全てのユーザーに適用されます。そこに次の内容を追記をすることでユーザーごとに初期設定を変更することができます。

【今回の例の設定内容】
カスタム投稿タイプのスラッグ …blog
初期設定をしておきたいタクソノミーのスラッグ …content
ユーザーID1に設定するタームID…1
ユーザーID2、3に設定するタームID…23

function add_defaultcategory_automatically($post_ID) {
    global $wpdb;
    // 指定したタクソノミーに設定されているタームを取得
    $curTerm = wp_get_object_terms($post_ID, 'content');
    // ターム指定数が 0(未設定)の時
    if (0 == count($curTerm)) {
        // ログインしているユーザーの情報を取得
        global $current_user;
        get_currentuserinfo();
        // ユーザーIDが1の時
        if ($current_user->ID == "1") {
            // 指定をしたいタームIDを指定
            $defaultTerm= array(1);
        // ユーザーIDが2,3の時
        } else if ($current_user->ID == "2" ||$current_user->ID == "3" ) {
            // 指定をしたいタームIDを指定
            $defaultTerm= array(2,3,4);
        }
        // 指定したタクソノミーに指定したタームを設定
        wp_set_object_terms($post_ID, $defaultTerm, 'content');
    }
}
// 投稿する時に初期値を設定
add_action('publish_blog', 'add_defaultcategory_automatically');

最初の例の内容にログインしているユーザー情報を取得する記述を追記し、ユーザーIDごとに処理を分けています。
複数ユーザーを指定したい場合はユーザーIDの指定の間を||で区切り、複数カテゴリーを指定したい場合は,で区切ることで設定することができます。
例ではelse ifで分岐していますが、elseの分岐も可能です。(else ifでの分岐記述のみの場合、設定を書いていないユーザーIDでログインした場合はどのタームも設定されません。)

ユーザーごとにタクソノミーの設定をしてあると、選択し忘れた時の対策になるため、とても便利です!
ぜひご活用ください!

WordPressの関連記事はこちら

【WordPress】カスタム投稿でユーザーごとにタームの初期設定を変える方法
【WordPress】カスタム投稿でユーザーごとにタームの初期設定を変える方法

この記事をシェアする

関連記事

おすすめ記事

株式会社スピカデザイン

渋谷のWEB制作会社「スピカデザイン」の現役コーダー達が、WEB制作のヒントになるような情報をお届けします。

© 2020 spiqa design

×