【WordPress】投稿者別に編集可能なカテゴリ・タグを制限する方法

【WordPress】投稿者別に編集可能なカテゴリ・タグを制限する方法 WordPress

WordPressを複数人で運用していると、投稿者が誤ったカテゴリやタグを選択してしまい、記事の分類や表示に不整合が生じることがあります。こうした問題を防ぐには、投稿者ごとに選べるカテゴリやタグを制限するカスタマイズが有効です。

この記事では、特定のユーザー(またはユーザーID)に対して、投稿画面で選択できるカテゴリやタグを制御する方法を紹介します。

対象ユーザーを特定し、表示するカテゴリを制限する

以下のコードを functions.php に追加することで、特定のユーザーにだけ、特定のカテゴリのみを表示・選択できるように制御できます。

<?php
function restrict_categories_for_specific_user( $args, $taxonomy ) {
    // 対象とするユーザーのID
    $restricted_user_id = 5;

    // 対象のユーザーで、カテゴリ選択時のみ制限を実施
    if ( get_current_user_id() === $restricted_user_id && $taxonomy === 'category' ) {
        // 表示を許可するカテゴリID
        $allowed_category_ids = array( 3, 7, 15 );
        $args['include'] = $allowed_category_ids;
    }

    return $args;
}
add_filter( 'get_terms_args', 'restrict_categories_for_specific_user', 10, 2 );
?>

このコードでは、ユーザーID「5」の投稿者に対して、IDが「3」「7」「15」のカテゴリしか表示・選択できないようにしています。

タグ(post_tag)の制限も可能

$taxonomy'post_tag' の場合にも同様の方法で制限が可能です。以下のように条件分岐を追加してください。

if ( get_current_user_id() === $restricted_user_id && $taxonomy === 'post_tag' ) {
    $args['include'] = array( 12, 22, 35 ); // 許可するタグID
}

これにより、不要なタグの乱立や、分類ミスを未然に防ぐことができます。

複数ユーザーに対応させる場合

複数の投稿者に異なる制限をかけたい場合は、switch 文などでユーザーごとの制御を行います。

switch ( get_current_user_id() ) {
    case 5:
        if ( $taxonomy === 'category' ) {
            $args['include'] = array( 3, 7 );
        }
        break;
    case 8:
        if ( $taxonomy === 'category' ) {
            $args['include'] = array( 4, 9 );
        }
        break;
}

こうした柔軟な制御により、ユーザーごとに役割や担当領域を明確化することができます。

注意点

  • この制御は「表示の制限」であり、既に割り当てられているカテゴリやタグを外すものではありません
  • カテゴリやタグのIDは 投稿 > カテゴリー のURL末尾(tag_ID=◯)から確認できます。
  • ユーザーIDは ユーザー編集画面のURL(user_id=◯)で確認できます。

まとめ

WordPressでは、投稿者ごとに編集可能なカテゴリやタグを制限することで、分類ミスや不要なタグの乱立を防止し、運用の安定性を高めることができます。

とくに、特定のジャンル担当者や外部寄稿者がいる場合は、今回のような制御を取り入れることで、サイト全体の構造を維持しやすくなります。