ฉันจะอนุญาตให้บทบาท Editor เปลี่ยนการตั้งค่าธีมได้อย่างไร


22

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

ฉันสร้างผู้ใช้ใหม่เป็นบรรณาธิการดังนั้น

แต่ฉันเห็นว่าผู้ใช้รายนี้ไม่สามารถเปลี่ยนการตั้งค่าชุดรูปแบบเช่นพื้นหลังและส่วนหัว

มีวิธีง่าย ๆ ในการอนุญาตให้บทบาทของตัวแก้ไขแก้ไขการตั้งค่าชุดรูปแบบใด ๆ ใน Twenty Ten หรือ Child of it? โดยทั่วไปเขาควรจะสามารถทำสิ่งใดก็ได้ที่ผู้ดูแลระบบสามารถทำได้ ธีมอาจเปลี่ยนธีมได้


2
เตือนฉัน ... ฉันได้เขียนปลั๊กอินสำหรับสิ่งนั้น: ตัวเลือกชุดรูปแบบสำหรับบรรณาธิการ
fuxia

คำตอบ:


21

คุณสามารถเพิ่มความสามารถให้กับบทบาทบรรณาธิการโดยใช้ object role และ add_cap จากคุณ functions.php

<?php
   // get the the role object
   $editor = get_role('editor');
   // add $cap capability to this role object
   $editor->add_cap('edit_theme_options');
?>

คุณยังสามารถลบความสามารถ:

$editor->remove_cap('delete_posts'); 

ดูที่รายการความสามารถและความหมายของแต่ละรายการ


3
เจ๋งนั่นมันใช้ได้ผล! สำหรับ shorties: get_role('editor')->add_cap('edit_theme_options');:)
hakre

1
@hakre การกำหนดตัวแปร FYI Direct เช่นนั้นa()->b()จะไม่ทำงานในเวอร์ชัน PHP ก่อนหน้า 5
hitautodestruct

เนื่องจากโดยปกติบทบาทจะถูกเก็บไว้ในฐานข้อมูลการอัปเดตบทบาทควรทำในปลั๊กอินและมีอยู่ในฮุคการเปิดใช้งาน / ปิดการใช้งาน ไม่จำเป็นต้องเรียกใช้รหัสนี้ในทุก ๆ กระบวนการของ WordPress
David

6

เนื่องจากนี่เป็นคำถามยอดฮิตอันดับแรกของ google สำหรับคำถามนี้ฉันรู้สึกว่านี่เป็นสถานที่ที่เหมาะสมสำหรับการอัปเดต:

edit_theme_optionsสำหรับฉันฉันไม่สามารถรับมันในการทำงานผ่านทาง manage_optionsจากนั้นผมอ่านแหล่งปลั๊กอินและพบว่ามันเป็นจริง และมันก็ใช้งานได้

TL; DR:

$role_object = get_role( 'editor' );
$role_object->add_cap( 'manage_options' );

ได้ผลสำหรับฉัน (ในปี 2014)


เพื่อน ๆ ของที่ยอดเยี่ยม ...
Abbas

ต้องการเพิ่มอีกหนึ่งบรรทัดสำหรับ WP> 4.0$role_object->add_cap('customize');
Alex


1

ปลั๊กอินที่ยอดเยี่ยมอีกตัวคือ User Role Editor (http://wordpress.org/extend/plugins/user-role-editor/) มันคล้ายกับสมาชิก แต่พื้นฐานมากขึ้นและใช้งานง่าย นอกจากนี้ผู้พัฒนายังอยู่ใกล้ ๆ เพื่อรับฟังความคิดเห็นและเสนอความช่วยเหลือหากจำเป็น


0

นี่เก่า แต่นี่เป็นวิธีใหม่ที่คุณสามารถทำได้:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.