web-dev-qa-db-ja.com

ユーザーに新しいタグの作成を許可しないで既存のタグの使用を許可する方法

ある役割に新しいタグを追加できるようにしたいのですが、他のユーザーはテキストバーを使用して既存のタグを検索できるようにする必要があります。

サイドバーのタグバーを隠すことはできますが、それは望ましくありません。 「すみません、このタグは存在しません」とか、存在しないタグを誰かが入力したときに何か言ってほしいだけです。

私のためにそれをするプラグインや機能はありますか?

6
Jorn Reuvers

次のようにpre_insert_termにフックし、分類法とユーザーが指定された役割を持っているかどうかをチェックすることができます。

function disallow_insert_term($term, $taxonomy) {

    $user = wp_get_current_user();

    if ( $taxonomy === 'post_tag' && in_array('somerole', $user->roles) ) {

        return new WP_Error(
            'disallow_insert_term', 
            __('Your role does not have permission to add terms to this taxonomy')
        );

    }

    return $term;

}

add_filter('pre_insert_term', 'disallow_insert_term', 10, 2);

これにより、ユーザーは新しい用語を挿入できなくなりますが、既存の用語を検索して投稿に追加できます。

投稿編集画面で、存在しない用語名を入力してEnterキーを押すか、DOMに用語を追加する追加ボタンをクリックすることができますが、この時点では用語はデータベースに追加されません。ユーザーは投稿を公開または更新します。この時点で用語は許可されません。

6
userabuser