WordPressでカテゴリーの登録数を制限する必要があったときに使用したコードを紹介します。
以下のコードをfunctions.phpに貼り付けて、「$limit」には登録の上限数を設定し、「$target_taxonomy」には対象のタクソノミーを設定すればOKです。
紹介しているコードではデフォルトのカテゴリーを対象にしていますが、カスタムタクソノミーも対象にすることができます。
動作内容は、カテゴリーの管理画面で上限以上のカテゴリーを追加しようとすると、エラーメッセージが出力されてそれ以上登録できなくすることができます。
投稿作成画面上での追加にも有効ですが、エラーメッセージは出ません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /*------------------------------------------- カテゴリーの登録数を制限する ---------------------------------------------*/ function limit_term_insert($term, $taxonomy){ // カテゴリー数の上限 $limit = 10; // 対象のタクソノミー $target_taxonomy = 'category'; // 対象のタクソノミーじゃなかったらリターン if($taxonomy != $target_taxonomy) { return $term; } // 登録済のタクソノミー情報を取得 $terms = get_terms(array( 'taxonomy' => $target_taxonomy, 'get' => 'all', 'hide_empty' => false )); // 登録済のタクソノミー情報が上限に達していたらエラーを返す if(count($terms) >= $limit){ return new WP_Error('max_limit_term', 'エラー: カテゴリー登録数が上限('.$limit.'件)に達しているため追加できません。'); } return $term; } add_filter('pre_insert_term', 'limit_term_insert', 10, 2); |