カスタム投稿でカテゴリーを選択しなかった時に、特定のカテゴリーを自動選択させる方法を紹介します。
はじめに
WordPressでは、ふつうの投稿タイプではカテゴリー選択を忘れても、自動的に特定のカテゴリーが選ばれるようになっています。そしてそのカテゴリーは変更可能です。
これをカスタム投稿タイプに実装する方法を紹介します。この設定をすることにより、カスタム投稿タイプでもカテゴリー未選択が原因となる諸々のバグが発生しなくなるメリットがあります。
functions.phpの記述方法
方法は簡単でfunctioins.phpに数行のコードをコピペして、必要箇所を変更するだけです。
コピペ用のコードは下記のとおりですが、ご自分用に変更すべき箇所が4箇所ほどあります。
// -----------------------------------------------------------------
// カスタムタクソノミーのデフォルトターム設定
// -----------------------------------------------------------------
function add_defaultcategory_automatically($post_ID) {
global $wpdb;
$curTerm = wp_get_object_terms($post_ID, 'タクソノミーのスラッグ');
if (0 == count($curTerm)) {
// 指定をしたいタームIDを指定
$defaultTerm= array(初期設定にしたいタームIDの番号を書く);
wp_set_object_terms($post_ID, $defaultTerm, 'タクソノミーのスラッグ');
}
}
add_action('publish_カスタム投稿タイプのスラッグ', 'add_defaultcategory_automatically');
以下に詳しく使い方を説明していきます。
タクソノミーのスラッグ設定1
上のコピペ用コード6行目の’タクソノミーのスラッグ‘の”の中の日本語部分をご自分のタクソノミースラッグに変更して下さい。
$curTerm = wp_get_object_terms($post_ID, 'タクソノミーのスラッグ');
例えば、タクソノミースラッグがworks-catであれば下記のようになります。
$curTerm = wp_get_object_terms($post_ID, 'works-cat');
タクソノミーのスラッグ設定2
上のコピペ用コード10行目の’タクソノミーのスラッグ’の”の中の日本語部分をご自分のタクソノミースラッグに変更して下さい。
wp_set_object_terms($post_ID, $defaultTerm, 'タクソノミーのスラッグ');
例えば、タクソノミースラッグがworks-catであれば下記のようになります。
wp_set_object_terms($post_ID, $defaultTerm, 'works-cat');
カスタム投稿タイプの設定
上のコピペ用コード最終行の’publish_カスタム投稿タイプのスラッグ‘の日本語部分をご自分のカスタム投稿のスラッグに変更して下さい。
add_action('publish_カスタム投稿タイプのスラッグ', 'add_defaultcategory_automatically');
例えば、タクソノミースラッグがworksであれば下記のようになります。
add_action('publish_works', 'add_defaultcategory_automatically');
初期設定にしたいカテゴリーIDの設定
上のコピペ用コード9行目、(初期設定にしたいタームIDの番号を書く)のカッコ内の日本語部分、カテゴリー未選択時に自動的に選択されるカテゴリー(ターム)のID番号に変更してください。
$defaultTerm= array(初期設定にしたいタームIDの番号を書く);
たとえば、希望のタームIDが9であれば下記のようになります。
$defaultTerm= array(9);
タームIDの特定方法
タームIDの番号を調べる方法についても説明しておきます。
WordPress管理画面からカスタム投稿>カテゴリーとクリックし、カテゴリー編集画面を開く。
初期設定にしたいカテゴリー(ターム)名上をマウスオーバーすると、画面下に英数字の羅列が現れ、その中を探すとタームのID番号が見つかる。
まとめ
以上の方法で、カスタム投稿タイプでもカテゴリー未選択時に自動的に選ばれるカテゴリー名を設定することができます。