cho phép biên tập viên để chỉnh sửa menu?


46

Tôi muốn có thể cấp cho các biên tập viên của tôi quyền thay đổi menu, điều này có thể được thực hiện không?

Tab xuất hiện hoàn toàn không phải là một tùy chọn, tôi có thể làm như vậy không?

Câu trả lời:


53

thêm phần này vào chủ đề của bạn 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
là get_role một lớp?
Fuzz nhẹ

4
@Mild Fuzz - không phải là không, nhưng nó trả về một thể hiện củaWP_Role
TheDeadMedic

8
Bạn có thể không nên làm điều này theo mọi yêu cầu, vì điều này gây ra một db viết theo như tôi hiểu. Tốt hơn admin_initvà duy nhấtif !$role_object->has_cap('edit_theme_options')
jsphpl 14/2/2017

Cài đặt này được lưu vào cơ sở dữ liệu (trong bảng wp_options, trường wp_user_roles), vì vậy có thể tốt hơn để chạy ứng dụng này khi kích hoạt chủ đề / plugin. Xem codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf

Hoặc bạn có thể thêm nó vào
hàm.php

18

EDIT: cập nhật cho WP 4.9 và chỉ ẩn các mục menu cho Trình chỉnh sửa

Nếu bạn muốn người dùng của mình có thể thay đổi menu điều hướng, nhưng không phải các tùy chọn khác bên dưới: hãy sử dụng cái này

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

Bạn có thể nhận xét toàn bộ mã này sau khi bạn đã làm mới bảng quản trị của mình, bởi vì đoạn mã trên sẽ tạo ra những thay đổi liên tục cho cơ sở dữ liệu.

Bây giờ bạn có tất cả các tùy chọn dưới hình thức hiển thị cho các biên tập viên. Bạn có thể ẩn các tùy chọn khác như vậy:

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 dòng cuối cùng trong hide_menu()chức năng là chủ đề cụ thể cho chủ đề của tôi. Bạn có thể tìm thấy tham số thứ hai bằng cách nhấp vào menu con bạn muốn ẩn, trong bảng quản trị. URL của bạn sau đó sẽ là một cái gì đó như: example.com/wp-admin/theme.php?page= yiw_panel

Vì vậy, trong ví dụ này, tham số thứ hai cho remove_submenu_page()hàm sẽ làyiw_panel


1
Điều này ẩn chủ đề vv cho quản trị viên quá.
JorgeLuisBorges

12

Trong WordPress 3.8, đây sẽ là mã tốt hơn câu trả lời được chấp nhận hiện tại.

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

3

Khi tôi nhìn vào cấu trúc menu admin, có vẻ như các nav-menus.phpliên kết được gắn liền với khả năngedit_theme_options . Bạn có thể sửa đổi vai trò biên tập để bao gồm khả năng này? Điều này cũng sẽ cung cấp cho họ tùy chọn để chỉnh sửa các tiện ích , tôi không biết liệu đây có phải là sự cố không? Tất cả các công cụ trình đơn Ajax bị hạn chế bởi khả năng này, vì vậy chỉ cần thay đổi khả năng trình đơn quản trị viên để chỉnh sửa các menu có thể sẽ không hoạt động.


3

plugin instal "Trình soạn thảo vai trò người dùng" - Chuyển edit_theme_options BẬT - cài đặt plugin Quản trị hóa - tắt "Widget" và "Chuyển chủ đề" cho Trình chỉnh sửa;)


0

Tôi đã tìm thấy, rằng menu của bạn sẽ hoạt động theo cách này: plugin instal " User Role Editor " và ở đó bạn có thể chỉnh sửa điều kiện cho vai trò biên tập và khác. Chuyển edit_theme_options ON. Nhưng bây giờ: bạn sẽ thấy "menu" -option dưới "chủ đề", "widget". Đối với tôi: Sau khi nhấp vào "menu" (với tư cách là biên tập viên), tôi không thấy các tùy chọn đầy nhưng trống. Vì vậy, tôi đã hủy kích hoạt plugin "Trình soạn thảo vai trò người dùng" và các tùy chọn đã điền cho "menu" xuất hiện chính xác. Lưu ý rằng việc tắt plugin "Trình soạn thảo vai trò người dùng" vẫn là điều kiện để trình soạn thảo hoạt động! Tốt cho tôi, có lẽ nó cũng sẽ giúp bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.