web-dev-qa-db-ja.com

編集者にメニューの編集を許可しますか?

編集者にメニューを変更する権限を与えたいのですが、これは可能ですか?

外観タブはまったく選択肢に見えないのですが、そうすることはできますか?

45
Mild Fuzz

これをあなたのテーマのfunctions.phpに追加してください:

// add editor the privilege to edit theme

// get the the role object
$role_object = get_role( 'editor' );

// add $cap capability to this role object
$role_object->add_cap( 'edit_theme_options' );
50
user3474

編集:WP 4.9およびエディタのメニュー項目のみを非表示にするための更新

ユーザーがナビゲーションメニューを変更できるようにしたいが、外観の下にある他のオプションは変更できないようにするには、これを使用します。

// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );

上記のコードはデータベースに永続的な変更を加えるので、管理パネルを更新した後にこのコード全体をコメントアウトすることができます。

これで、すべてのオプションがエディタに表示されます。あなたはそのような他のオプションを隠すことができます:

function hide_menu() {

    if (current_user_can('editor')) {

        remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
        remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php' ); // hide the customizer submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php&autofocus%5Bcontrol%5D=background_image' ); // hide the background submenu


        // these are theme-specific. Can have other names or simply not exist in your current theme.
        remove_submenu_page( 'themes.php', 'yiw_panel' );
        remove_submenu_page( 'themes.php', 'custom-header' );
        remove_submenu_page( 'themes.php', 'custom-background' );
    }
}

add_action('admin_head', 'hide_menu');

hide_menu()関数の最後の3行は私のテーマに特有のものです。 2番目のパラメータは、管理者パネルで非表示にしたいサブメニューをクリックすることで見つけることができます。 URLはexample.com/wp-admin/themes.php?page= yiw_panel のようになります。

したがって、この例では、remove_submenu_page()関数の2番目のパラメーターはyiw_panelになります。

18
Jules

WordPress 3.8では、これは現在認められている答えよりも優れたコードです。

/**
 * @var $roleObject WP_Role
 */
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
    $roleObject->add_cap( 'edit_theme_options' );
}
12
BenFreke

インストールプラグイン "User Role Editor" - edit_theme_optionsをオンにします - インストールプラグインを管理します - "ウィジェット"と "テーマの切り替え"をオフにします;)

4
user4657

管理メニューの構造を見ると、 nav-menus.phpリンクはケーパビリティedit_theme_options に関連付けられています。この機能を含めるために編集者の役割を変更できますか?これはまた それらにウィジェットを編集するオプションを与えるでしょう 、私はこれが問題であるかどうかわかりませんか? Ajax関連のすべての機能はこの機能によって制限されているので、メニューを編集するために管理メニュー機能を変更するだけではおそらくうまくいかないでしょう。

3
Jan Fabry

私はあなたのメニューがこのように動作することを発見しました:インストールプラグイン " User Role Editor "そしてそこであなたはエディタロールとその他の条件を編集することができます。 edit_theme_optionsをONにします。しかし今:あなたは "テーマ"、 "ウィジェット"の下に "メニュー"オプションが表示されます。私のために:(メニューとして) "menu"をクリックした後、私はいっぱいになったオプションを見ることはないが空だ。だから私はプラグイン "User Role Editor"を無効にして "menu"のための記入されたオプションが正しく表示されるようにします。プラグイン「User Role Editor」を無効にしても、エディタがアクティブになる条件は変わりません。私にとっては良い、多分それもあなたを助けるでしょう

0
janoo