ฉันต้องการให้อำนาจแก่ผู้แก้ไขของฉันในการเปลี่ยนเมนูสิ่งนี้สามารถทำได้หรือไม่?
แท็บลักษณะที่ปรากฏไม่ได้เป็นตัวเลือกเลยฉันสามารถทำมันได้หรือไม่
ฉันต้องการให้อำนาจแก่ผู้แก้ไขของฉันในการเปลี่ยนเมนูสิ่งนี้สามารถทำได้หรือไม่?
แท็บลักษณะที่ปรากฏไม่ได้เป็นตัวเลือกเลยฉันสามารถทำมันได้หรือไม่
คำตอบ:
เพิ่มลงในธีมของคุณ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
และมีเพียงif !$role_object->has_cap('edit_theme_options')
แก้ไข: อัปเดตสำหรับ WP 4.9 และซ่อนเฉพาะรายการเมนูสำหรับเครื่องมือแก้ไข
หากคุณต้องการให้ผู้ใช้ของคุณสามารถเปลี่ยนเมนูการนำทาง แต่ไม่ใช่ตัวเลือกอื่น ๆ ภายใต้รูปลักษณ์: ใช้สิ่งนี้
// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );
คุณสามารถคอมเม้นต์รหัสทั้งหมดนี้ได้หลังจากรีเฟรชพาเนลผู้ดูแลระบบของคุณแล้วเพราะโค้ดด้านบนจะทำการเปลี่ยนแปลงฐานข้อมูลแบบถาวร
ตอนนี้คุณมีตัวเลือกทั้งหมดภายใต้การปรากฏของบรรณาธิการ คุณสามารถซ่อนตัวเลือกอื่น ๆ เช่น:
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 บรรทัดสุดท้ายในhide_menu()
ฟังก์ชั่นเป็นธีมเฉพาะสำหรับธีมของฉัน คุณสามารถค้นหาพารามิเตอร์ตัวที่สองได้โดยคลิกที่เมนูย่อยที่คุณต้องการซ่อนในแผงการดูแลระบบ URL ของคุณจะเป็นดังนี้: example.com/wp-admin/themes.php?page= yiw_panel
ดังนั้นในตัวอย่างนี้พารามิเตอร์ตัวที่สองของremove_submenu_page()
ฟังก์ชันจะเป็นyiw_panel
ใน WordPress 3.8 นี่จะเป็นรหัสที่ดีกว่าคำตอบที่ยอมรับในปัจจุบัน
/**
* @var $roleObject WP_Role
*/
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
$roleObject->add_cap( 'edit_theme_options' );
}
เมื่อฉันมองไปที่ผู้ดูแลระบบโครงสร้างเมนูที่ดูเหมือนว่าการเชื่อมโยงจะเชื่อมโยงกับความสามารถในการ คุณสามารถแก้ไขบทบาทบรรณาธิการเพื่อรวมความสามารถนี้ได้หรือไม่? นี่จะให้ทางเลือกแก่พวกเขาในการแก้ไขวิดเจ็ตฉันไม่รู้ว่านี่เป็นปัญหาหรือไม่? เมนูอาแจ็กซ์ทุกสิ่งนั้นถูก จำกัด ด้วยความสามารถนี้ดังนั้นเพียงแค่เปลี่ยนความสามารถของเมนูผู้ดูแลระบบสำหรับเมนูแก้ไขอาจจะไม่ทำงานnav-menus.php
edit_theme_options
ติดตั้งปลั๊กอิน "แก้ไขบทบาทผู้ใช้" - สลับ edit_theme_options ON - ติดตั้งปลั๊กอินจัดการ - ปิด "วิดเจ็ต" และ "เปลี่ยนธีม" สำหรับบรรณาธิการ;)
ฉันเคยพบแล้วว่าเมนูของคุณจะทำงานในลักษณะนี้: ปลั๊กอิน instal " ตัวแก้ไขบทบาทผู้ใช้ " และคุณสามารถแก้ไขเงื่อนไขสำหรับบทบาทตัวแก้ไขและอื่น ๆ ได้เช่นกัน สลับ edit_theme_options ON แต่ตอนนี้คุณจะเห็น "เมนู" - ตัวเลือกภายใต้ "ธีม", "วิดเจ็ต" สำหรับฉัน: หลังจากคลิกที่ "เมนู" (ในฐานะบรรณาธิการ) ฉันไม่เห็นตัวเลือกที่เต็มไป แต่ว่างเปล่า ดังนั้นฉันจะปิดการใช้งานปลั๊กอิน "ตัวแก้ไขบทบาทผู้ใช้" และตัวเลือกที่เติมสำหรับ "เมนู" ปรากฏขึ้นอย่างถูกต้อง โปรดทราบว่าการปิดใช้งานปลั๊กอิน "User Role Editor" ยังคงมีเงื่อนไขสำหรับการแก้ไขที่ใช้งานอยู่! ดีสำหรับฉันบางทีมันอาจจะช่วยคุณได้เช่นกัน