bolehkan editor mengedit menu?

46

Saya ingin dapat memberikan editor saya kekuatan untuk mengubah menu, dapatkah ini dilakukan?

Tab tampilan sepertinya tidak menjadi pilihan sama sekali, bisakah saya membuatnya?

Fuzz Ringan
sumber

Jawaban:

53

tambahkan ini ke tema Anda 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' );
Jan Fabry
sumber
1
Apakah get_role sebuah kelas?
Mild Fuzz
4
@Mild Fuzz - bukan dirinya sendiri tidak, tetapi mengembalikan sebuah instance dariWP_Role
TheDeadMedic
8
Anda mungkin tidak boleh melakukan ini pada setiap permintaan, karena ini menyebabkan db menulis sejauh yang saya mengerti. Lebih baik admin_initdan hanyaif !$role_object->has_cap('edit_theme_options')
jsphpl
Pengaturan ini disimpan ke database (dalam tabel wp_options, bidang wp_user_roles), jadi mungkin lebih baik untuk menjalankan ini pada aktivasi tema / plugin. Lihat codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf
Atau Anda dapat menambahkannya ke functions.php, jalankan sekali dan kemudian hapus
d79
18

EDIT: perbarui untuk WP 4.9 & hanya menyembunyikan item menu untuk Editor

Jika Anda ingin pengguna Anda dapat mengubah menu navigasi, tetapi bukan pilihan lain dalam tampilan: gunakan ini

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

Anda dapat mengomentari seluruh kode ini setelah Anda me-refresh panel admin Anda, karena kode di atas akan membuat perubahan terus-menerus ke database.

Anda sekarang memiliki semua opsi di bawah tampilan yang terlihat oleh editor. Anda dapat menyembunyikan opsi lain seperti:

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');

3 baris terakhir dalam hide_menu()fungsi adalah tema khusus untuk tema saya. Anda dapat menemukan parameter kedua dengan mengklik pada submenu yang ingin Anda sembunyikan, di panel admin. URL Anda kemudian akan menjadi seperti: example.com/wp-admin/themes.php?page= yiw_panel

Jadi, dalam contoh ini, parameter kedua untuk remove_submenu_page()fungsi tersebut adalahyiw_panel

Jules
sumber
1
ini menyembunyikan tema, dll untuk admin juga.
JorgeLuisBorges
12

Di WordPress 3.8, ini akan menjadi kode yang lebih baik daripada jawaban yang diterima saat ini.

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

instal plugin "Editor Peran Pengguna" - Alihkan edit_theme_options AKTIF - instal plugin Adminimize - matikan "Widget" dan "Alihkan Tema" untuk Editor;)


sumber
0

Saya telah menemukan, bahwa menu Anda akan bekerja dengan cara ini: instal plugin " User Role Editor " dan di sana Anda dapat mengedit kondisi untuk peran editor dan lainnya juga. Alihkan edit_theme_options AKTIF. Tapi sekarang: Anda akan melihat "menu" -Opsi di bawah "tema", "widget". Bagi saya: Setelah klik ke "menu" (sebagai editor) saya tidak melihat opsi yang diisi tetapi kosong. Jadi saya menonaktifkan plugin "Editor Peran Pengguna" dan opsi yang diisi untuk "menu" muncul dengan benar. Perhatikan bahwa menonaktifkan plugin "Editor Peran Pengguna" tetap merupakan kondisi untuk editor aktif! Baik untuk saya, mungkin itu akan membantu Anda juga


sumber