editörlerin menüleri düzenlemesine izin verilsin mi?


46

Editörlerime menüyü değiştirme yetkisi vermek istiyorum, bu yapılabilir mi?

Görünüm sekmesi bir seçenek olarak görünmüyor, öyle yapabilir miyim?

Yanıtlar:


53

bunu temanıza ekleyin 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' );

1
get_role bir sınıf mı?
Hafif Fuzz

4
@Mild Fuzz - değil kendisi hayır, ama bir örneğini döndürürWP_Role
TheDeadMedic

8
Muhtemelen bunu her istek üzerine yapmamalısınız, çünkü bu benim anladığım kadarıyla db yazmaya neden oluyor. admin_initSadece ve daha iyiif !$role_object->has_cap('edit_theme_options')
jsphpl

Bu ayar veritabanına kaydedilir (tablo wp_options, field wp_user_roles tablosunda), bu yüzden bunu tema / eklenti aktivasyonunda çalıştırmak daha iyi olabilir. Bkz codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf

Ya da onu bir de
işlev.php dosyasına

18

EDIT: WP 4.9 için güncelleme ve sadece Editör için menü öğelerini gizleme

Kullanıcılarınızın gezinti menüsünü değiştirebilmelerini, ancak görünümdeki diğer seçenekleri değiştirmemelerini istiyorsanız: bunu kullanın.

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

Yönetici kodunuzu yeniledikten sonra bu kodun tamamını yorumlayabilirsiniz, çünkü yukarıdaki kod veritabanında kalıcı değişiklikler yapacaktır.

Artık editörlerin görebileceği tüm seçenekler mevcut. Bunun gibi diğer seçenekleri de gizleyebilirsiniz:

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

İşlevdeki son 3 satır hide_menu(), temam için özel tema. İkinci parametreyi, gizlemek istediğiniz alt menüye tıklayarak yönetici panelinde bulabilirsiniz. URL’niz şunun gibi olacaktır: example.com/wp-admin/themes.php?page= yiw_panel

Yani, bu örnekte, remove_submenu_page()işlev için ikinci parametreyiw_panel


1
bu da yöneticiler için temalar vb.
JorgeLuisBorges

12

WordPress 3.8'de bu, geçerli kabul edilen cevaptan daha iyi bir kod olacaktır.

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

3

Yönetici menü yapısına baktığımda , nav-menus.phpbağlantının kabiliyete bağlıedit_theme_options olduğu görülüyor . Editör rolünü bu özelliği içerecek şekilde değiştirebilir misiniz? Bu aynı zamanda onlara widget düzenleme seçeneği verirdi , bunun bir sorun olup olmadığını bilmiyorum? Tüm Ajax menüleri bu özellik tarafından sınırlandırılmıştır, bu yüzden menüleri düzenlemek için yönetici menü özelliğinin değiştirilmesi muhtemelen çalışmaz.


3

instal eklentisi "Kullanıcı Rolü Düzenleyicisi" - Switch edit_theme_options ON - eklentiyi yükle Yönet - Editörler için "Widgets" ve "Tema Değiştir";)


0

Menünüzün bu şekilde çalışacağını öğrendim: "Eklenti" Kullanıcı Rolü Düzenleyicisi "ve orada editör rolü ve diğer koşulları da düzenleyebilirsiniz. Edit_theme_options AÇIK duruma getirin. Ama şimdi: "menu" - "themes" altından "widget" ifadesini göreceksiniz. Benim için: "Menu" ye (editör olarak) tıkladıktan sonra dolu seçenekleri görmedim ama boş. Böylece "User Role Editor" eklentisini devre dışı bıraktım ve "menu" için doldurulmuş seçenekler doğru görünüyor. "User Role Editor" eklentisinin devre dışı bırakılmasının aktif editör için şart olmaya devam ettiğini unutmayın! Benim için iyi, belki sana da yardımcı olur

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.