特定のロールで新しいタグを追加できるようにしたいのですが、他のユーザーはテキストバーを使用して既存のタグを検索できる必要があります。
サイドバーのタグバーを非表示にできることはわかっていますが、それは必要ありません。「申し訳ありませんが、このタグは存在しません」などと表示したいだけです。
それを行うプラグインまたは関数はありますか?
特定のロールで新しいタグを追加できるようにしたいのですが、他のユーザーはテキストバーを使用して既存のタグを検索できる必要があります。
サイドバーのタグバーを非表示にできることはわかっていますが、それは必要ありません。「申し訳ありませんが、このタグは存在しません」などと表示したいだけです。
それを行うプラグインまたは関数はありますか?
回答:
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に用語を追加する追加ボタンをクリックできることに注意してください。ただし、この時点では、用語はデータベースに追加されるまでデータベースに追加されません。ユーザーは投稿を公開または更新し、その時点で用語は許可されません。
post_tag
、他の分類法categories
やカスタム分類法ではありませんか?
wp-config.php
、次の定数を設定しdefine('WP_DEBUG', true);
、 define('WP_DEBUG_LOG', true);
し、 define('WP_DEBUG_DISPLAY', false);
その後、上記の機能の抜粋で、とコールログerror_log($taxonomy);
とする別の呼び出しerror_log(implode(', ', $user->roles));
、その後のポストを更新し、タグを追加し、これはその後、作成されdebug.log
たファイルをwp-content
ディレクトリ。このコールバックは私のために機能するので、この関数が呼び出されているかどうか、および関数が条件ステートメントを正しく入力しているかどうかを確認する必要があります。