2024.07.19
ChatGPTにクラス名を付けてもらってみた
- コーディング
WordPressのカスタム投稿で作成した際、投稿と同じようにカテゴリー(タクソノミー)の選択状態の初期設定ができると便利ですよね。
また、複数ユーザーで更新する場合、ユーザーごとに初期設定を変更したいと思うことも出てくるかと思います。
今回はそんな時に役立つ、カスタム投稿のタームの初期設定の方法と、それを応用したユーザーごとに初期設定を変更する方法をご紹介します。
目次
まず、今回ご紹介する方法ではタームのスラッグではなくID、ユーザーの設定もIDでの指定になるため指定する各IDを確認します。
設定をしたいタクソノミーのタームの編集画面を開き、URLを確認します。/wp-admin/tearm.php?taxonomy...
に続くtag_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…2、3
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の関連記事はこちら
株式会社スピカデザイン
渋谷のWEB制作会社「スピカデザイン」の現役コーダー達が、WEB制作のヒントになるような情報をお届けします。
© 2020 spiqa design