Berikan Akses Editor Ke Sidebar

15

Saya ingin memberikan Peran Editor peran untuk mengedit sidebar dan isinya. Saya memiliki widget teks di sana dan untuk mengedit widget teks ini pengguna perlu menjadi admin - ini menyebalkan. Bagaimana cara saya memberikan izin kepada Peran Editor yang akan memberinya akses untuk mengedit sidebar?

Howdy_McGee
sumber
Tampaknya menjadi semacam apa yang saya cari tetapi saya tidak mengerti kodenya. Sepertinya dia membuat pengguna baru dan menetapkan peran alih-alih mengedit pengguna yang ada
Howdy_McGee

Jawaban:

21

The edit_theme_optionskemampuan harus memungkinkan pengguna untuk mengedit sidebar seperti yang dijelaskan di halaman ini: http://codex.wordpress.org/Appearance_Widgets_SubPanel

Kode untuk ditambahkan functions.php

   $role = get_role('editor'); 
   $role->add_cap('edit_theme_options');

Edit:

Ini harus berfungsi untuk mencegah editor mengakses tema atau menu

function custom_admin_menu() {

    $user = new WP_User(get_current_user_id());     
    if (!empty( $user->roles) && is_array($user->roles)) {
        foreach ($user->roles as $role)
            $role = $role;
    }

    if($role == "editor") { 
       remove_submenu_page( 'themes.php', 'themes.php' );
       remove_submenu_page( 'themes.php', 'nav-menus.php' ); 
    }       
}

add_action('admin_menu', 'custom_admin_menu');

Saya belum memiliki kesempatan untuk menguji ini, tetapi itu hanya menghapus mereka dari menu mereka mungkin masih dapat mengaksesnya dengan mengetikkan URL secara langsung.

Elliott
sumber
Itu bekerja seperti pesona tetapi bagaimana saya menjaga mereka dari mengakses menu atau tema?
Howdy_McGee
Lihat jawaban saya yang diedit.
Elliott
Kesalahan Fatal: Panggil ke fungsi undefined remove_menu_page () - Juga saya tidak khawatir tentang mereka mengetiknya dengan URL. Saya benar-benar ragu seseorang akan menjadi jahat dan meskipun begitu hanya tema dan menu. Dan saya tidak bisa memberi +1 cukup pada pos Anda! Terima kasih!
Howdy_McGee
Maaf menambahkan kode yang salah seharusnya remove_submenu_pagemeskipun Anda masih belum mendapatkan kesalahan fatal. Saya telah mengedit jawaban saya dan menguji dan semua berfungsi dengan baik untuk saya?
Elliott
1
Oh itu sebabnya mengapa hanya didukung sejak 3.1.0, saya tidak punya bug sejak pemutakhiran ... Saya selalu menyarankan untuk memutakhirkan ke versi terbaru untuk membantu menjaga keamanannya.
Elliott
1

Jika Anda hanya ingin mengkonfigurasi ini semudah mungkin, gunakan plugin Anggota. Kemampuan yang perlu Anda tambahkan adalah 'edit_theme_options'. Ketahuilah bahwa ini akan memberikan lebih dari sekadar area widget, ini juga memberikan akses editor ke seluruh menu Penampilan. Lihat disini

http://wordpress.org/extend/plugins/members/

Jika Anda ingin melakukan ini secara terprogram, Anda harus menggunakan add_cap ().

$editor = get_role('editor');
$editor->add_cap('edit_theme_options');

Anda dapat membuang kode itu ke plugin sendiri, dan selesai. Atau memasukkannya ke functions.php .

eddiemoya
sumber
Dan jika ada yang menggunakan Editor Peran Pengguna yang cukup populer, Anda dapat memilih 'Edit Opsi Tema' / 'edit_theme_options' di sana juga.