อนุญาตให้ผู้แก้ไขแก้ไขเมนูหรือไม่


46

ฉันต้องการให้อำนาจแก่ผู้แก้ไขของฉันในการเปลี่ยนเมนูสิ่งนี้สามารถทำได้หรือไม่?

แท็บลักษณะที่ปรากฏไม่ได้เป็นตัวเลือกเลยฉันสามารถทำมันได้หรือไม่

คำตอบ:


53

เพิ่มลงในธีมของคุณ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 เป็นคลาสหรือไม่
Mild Fuzz

4
@Mild Fuzz - ไม่ใช่ตัวเอง แต่มันกลับมาเป็นตัวอย่างของWP_Role
TheDeadMedic

8
คุณอาจไม่ควรทำตามคำขอทุกอันเพราะจะทำให้ db เขียนเท่าที่ฉันเข้าใจ ที่ดีขึ้นในadmin_initและมีเพียงif !$role_object->has_cap('edit_theme_options')
jsphpl

การตั้งค่านี้จะถูกบันทึกลงในฐานข้อมูล (ในตาราง wp_options, ฟิลด์ wp_user_roles) ดังนั้นจึงอาจดีกว่าที่จะรันในการเปิดใช้งานธีม / ปลั๊กอิน ดูcodex.wordpress.org/Function_Reference/add_cap
Pim Schaaf

หรือคุณสามารถเพิ่มมันลงใน functions.php รันครั้งเดียวแล้วลบออก
d79

18

แก้ไข: อัปเดตสำหรับ 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


1
สิ่งนี้ซ่อนธีมและอื่น ๆ สำหรับผู้ดูแลระบบด้วย
JorgeLuisBorges

12

ใน WordPress 3.8 นี่จะเป็นรหัสที่ดีกว่าคำตอบที่ยอมรับในปัจจุบัน

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

3

เมื่อฉันมองไปที่ผู้ดูแลระบบโครงสร้างเมนูที่ดูเหมือนว่าการเชื่อมโยงจะเชื่อมโยงกับความสามารถในการ คุณสามารถแก้ไขบทบาทบรรณาธิการเพื่อรวมความสามารถนี้ได้หรือไม่? นี่จะให้ทางเลือกแก่พวกเขาในการแก้ไขวิดเจ็ตฉันไม่รู้ว่านี่เป็นปัญหาหรือไม่? เมนูอาแจ็กซ์ทุกสิ่งนั้นถูก จำกัด ด้วยความสามารถนี้ดังนั้นเพียงแค่เปลี่ยนความสามารถของเมนูผู้ดูแลระบบสำหรับเมนูแก้ไขอาจจะไม่ทำงานnav-menus.phpedit_theme_options


3

ติดตั้งปลั๊กอิน "แก้ไขบทบาทผู้ใช้" - สลับ edit_theme_options ON - ติดตั้งปลั๊กอินจัดการ - ปิด "วิดเจ็ต" และ "เปลี่ยนธีม" สำหรับบรรณาธิการ;)


0

ฉันเคยพบแล้วว่าเมนูของคุณจะทำงานในลักษณะนี้: ปลั๊กอิน instal " ตัวแก้ไขบทบาทผู้ใช้ " และคุณสามารถแก้ไขเงื่อนไขสำหรับบทบาทตัวแก้ไขและอื่น ๆ ได้เช่นกัน สลับ edit_theme_options ON แต่ตอนนี้คุณจะเห็น "เมนู" - ตัวเลือกภายใต้ "ธีม", "วิดเจ็ต" สำหรับฉัน: หลังจากคลิกที่ "เมนู" (ในฐานะบรรณาธิการ) ฉันไม่เห็นตัวเลือกที่เต็มไป แต่ว่างเปล่า ดังนั้นฉันจะปิดการใช้งานปลั๊กอิน "ตัวแก้ไขบทบาทผู้ใช้" และตัวเลือกที่เติมสำหรับ "เมนู" ปรากฏขึ้นอย่างถูกต้อง โปรดทราบว่าการปิดใช้งานปลั๊กอิน "User Role Editor" ยังคงมีเงื่อนไขสำหรับการแก้ไขที่ใช้งานอยู่! ดีสำหรับฉันบางทีมันอาจจะช่วยคุณได้เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.