web-dev-qa-db-ja.com

管理者以外のユーザーを既存のタグに制限するためのプラグイン

管理者以外のユーザーを既存のタグのみに制限するプラグインはありますか?これにはカテゴリを使用できましたが、多数のタグ(〜1000)を使用して表示するのは困難です。

6
ltfishie

まだタグを作成していない場合は、 "Bulk Add Tags"プラグインを使用できます - http://wordpress.org/extend/plugins/bulk-add-tags/

それから、管理者以外のすべてのユーザーが「新規投稿」画面で新しいタグを追加することを制限するには、このコードをテーマのfunctions.phpファイルに追加します。

//Hide Post Page Options from all except Administrator
if (!current_user_can('administrator')){
function hide_post_page_options() {
global $post;
$hide_post_options = "<style type=\"text/css\"> .jaxtag { display: none; }</style>";
print($hide_post_options);
}
add_action( 'admin_head', 'hide_post_page_options'  );
}

これは、管理者を除くすべてのユーザーから新しいタグを入力するためのボックスを隠すだけです。

私は実際に "New Post"ページの多くの部分を隠すためにこのメソッドを使います。 { display: none; }の前にカンマで区切って、要素のdivクラスまたはidを見つけて追加するだけです。慣れていない場合は、FirefoxでFirebugプラグインを使用するか、単に右クリックしてChromeで[Inspect Element]を選択します。

Wordpressから機能を完全に削除するのではなく、機能を必要としないユーザーからは機能が隠されているだけなので、私は多くのプラグインよりもこの方法を好みます。

2
Travis Pflanz

これらの解決策のどれも、管理者以外のユーザーが投稿で既存のタグを使用できるようにするのに、新しいタグを作成することができないようにするために必要なことをまったく行いませんでした。そこで、私は次のような解決策を作成しました。これはうまく機能します - タグが追加されなかったというフィードバックをユーザーに提供することはありません(タグ作成をただちに元に戻すだけです)。

add_action('create_term','undo_create_term',10, 3);

function undo_create_term ($term_id, $tt_id, $taxonomy) {
    if ( !current_user_can( 'administrator' ) )  {
        if($taxonomy == 'post_tag') {
        wp_delete_term($term_id,$taxonomy);
        }
    }
}
5
murdaugh

あなたの質問は本当に私を魅了しました。私はこの状況のた​​めの大きな用途を見ることができます、それで私はあなたが答えを見つけるのを手伝うために私ができることは何でもします。

もう一つの解決策は、あなたが他の答えに対するあなたのコメントで述べたものではありませんが、タグがアルファベット順にリストされているので、ユーザーが欲しいタグを見つけるのを少し簡単にします。

タグの管理機能プラグイン - http://wordpress.org/extend/plugins/manage-tags-capability/ /

また、注意してください:この方法では、ユーザーはすべての利用可能なタグから選択できます。私はただ気づいた、他の方法はユーザーが「最も使用された」タグから選択することを可能にするだけです。

Wordpressはすでにタグを入力するときに自動予測を実行するので、基本的に、ユーザーが自分の欲しいタグを入力できるようにする方法を見つける必要があります。

1
Travis Pflanz

これは私が(あなたのテーマのfunctions.phpで)同じ問題を解決する方法です:

/* Removing Tags for users */
if (is_admin()) :
function my_remove_meta_boxes() {
 if(!current_user_can('publish_posts')) { 
   remove_meta_box('tagsdiv-post_tag', 'post', 'normal');
 }
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );
endif;

最初に管理領域かどうかを確認し、次にユーザーが投稿を公開できるかどうかを確認します(通常は管理者と編集者です)。ただし、remove_meta_boxを使用して魔法をかけます。

0
mayuxi