ให้สิทธิ์การเข้าถึงแก่แถบด้านข้างในการแก้ไข


15

ฉันต้องการให้สิทธิ์บทบาท Editor เพื่อแก้ไขแถบด้านข้างและเนื้อหา ฉันมีวิดเจ็ตข้อความอยู่ในนั้นและเพื่อแก้ไขวิดเจ็ตข้อความนี้ผู้ใช้จะต้องเป็นผู้ดูแลระบบ - นี่แย่มาก ฉันจะให้สิทธิ์แก่บทบาทผู้แก้ไขที่จะทำให้เขาสามารถเข้าถึงการแก้ไขแถบด้านข้างได้อย่างไร


สิ่งนี้อาจเกี่ยวข้อง: wordpress.stackexchange.com/questions/13413/…
Elliott

ดูเหมือนจะเป็นสิ่งที่ฉันกำลังมองหา แต่ฉันไม่เข้าใจรหัส ดูเหมือนว่าคุณกำลังสร้างผู้ใช้ใหม่และกำหนดบทบาทแทนการแก้ไขผู้ใช้ที่มีอยู่
Howdy_McGee

คำตอบ:


21

edit_theme_optionsความสามารถจะช่วยให้ผู้ใช้สามารถแก้ไขแถบด้านข้างตามที่อธิบายไว้ในหน้านี้: http://codex.wordpress.org/Appearance_Widgets_SubPanel

รหัสที่จะเพิ่ม functions.php

   $role = get_role('editor'); 
   $role->add_cap('edit_theme_options');

แก้ไข:

สิ่งนี้ควรใช้เพื่อป้องกันไม่ให้เครื่องมือแก้ไขเข้าถึงธีมหรือเมนู

function custom_admin_menu() {

    $user = new WP_User(get_current_user_id());     
    if (!empty( $user->roles) && is_array($user->roles)) {
        foreach ($user->roles as $role)
            $role = $role;
    }

    if($role == "editor") { 
       remove_submenu_page( 'themes.php', 'themes.php' );
       remove_submenu_page( 'themes.php', 'nav-menus.php' ); 
    }       
}

add_action('admin_menu', 'custom_admin_menu');

ฉันไม่ได้มีโอกาสทดสอบสิ่งนี้ แต่เพียงลบพวกเขาออกจากเมนูที่พวกเขาอาจยังสามารถเข้าถึงได้โดยพิมพ์ URL โดยตรง


ใช้งานได้อย่างมีเสน่ห์ แต่ฉันจะป้องกันไม่ให้พวกเขาเข้าถึงเมนูหรือธีมได้อย่างไร
Howdy_McGee

ดูคำตอบที่แก้ไขของฉัน
Elliott

ข้อผิดพลาดร้ายแรง: ฟังก์ชัน Call to undefined remove_menu_page () - นอกจากนี้ฉันไม่กังวลเกี่ยวกับพวกเขาที่พิมพ์ด้วย URL ฉันสงสัยจริงๆว่ามีบางคนกำลังเป็นอันตรายและแม้เป็นเพียงธีมและเมนู และฉัน +1 โพสต์ของคุณไม่พอ! ขอบคุณ!
Howdy_McGee

ขออภัยเพิ่มรหัสผิดที่ควรเป็นremove_submenu_pageแม้ว่าคุณจะยังไม่ได้รับข้อผิดพลาดร้ายแรง ฉันได้แก้ไขคำตอบและทดสอบแล้วและใช้ได้กับฉันทั้งหมดหรือไม่
Elliott

1
โอ้นั่นเป็นเหตุผลว่าทำไมจึงรองรับเฉพาะตั้งแต่ 3.1.0 ฉันไม่มีข้อผิดพลาดตั้งแต่อัปเกรด ... ฉันขอแนะนำให้อัปเกรดเป็นเวอร์ชันล่าสุดเสมอเพื่อช่วยรักษาความปลอดภัย
Elliott

1

หากคุณต้องการกำหนดค่านี้ให้ง่ายที่สุดให้ใช้ปลั๊กอินสมาชิก ความสามารถที่คุณต้องการเพิ่มคือ 'edit_theme_options' โปรดทราบว่าสิ่งนี้จะให้สิทธิ์มากกว่าพื้นที่วิดเจ็ตซึ่งเป็นการให้สิทธิ์การเข้าถึงแก่ผู้แก้ไขในเมนูลักษณะที่ปรากฏทั้งหมด ดูที่นี่

http://wordpress.org/extend/plugins/members/

หากคุณต้องการทำสิ่งนี้โดยทางโปรแกรมคุณจะต้องใช้ add_cap ()

$editor = get_role('editor');
$editor->add_cap('edit_theme_options');

คุณสามารถโยนรหัสนั้นลงในปลั๊กอินของตัวเองและของคุณเสร็จแล้ว หรือใส่ลงในfunctions.php


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