Câu trả lời:
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' );
WP_Role
admin_init
và duy nhấtif !$role_object->has_cap('edit_theme_options')
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
Khi tôi nhìn vào cấu trúc menu admin, có vẻ như các nav-menus.php
liê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.
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;)
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