จะเพิ่มความสามารถให้กับบทบาทผู้ใช้ได้อย่างไร


14

ฉันกำลังจัดการเครือข่าย Wordpress และต้องการเพิ่มความสามารถของผู้ใช้ที่ไม่ได้กรองให้กับบทบาทผู้ใช้ที่กำหนดไว้ล่วงหน้าของ Admin ในการติดตั้ง Wordpress แบบมาตรฐานบัญชีผู้ดูแลระบบจะมีความสามารถนี้อยู่แล้ว แต่ในการติดตั้ง MU ผู้ดูแลระบบเท่านั้นที่มีความสามารถนี้ Wordpress บทบาทและความสามารถ

ฉันจะเพิ่มบทบาทผู้ดูแลระบบจากภายในธีมหรือปลั๊กอินได้อย่างไร


1
wordpress.org/extend/plugins/unfiltered-muดูเหมือนว่าอาจช่วยได้ แต่มันใช้งานได้สำหรับผู้ดูแลระบบและบรรณาธิการ หากไม่เป็นที่ต้องการบางทีรหัสสามารถปรับเปลี่ยนเล็กน้อย?
รายได้ Voodoo


@Rev ขอบคุณสำหรับคำแนะนำ นี้ช่วยให้หลั่งน้ำตาแสงในบางเรื่องการเพิ่มขีดความสามารถของ unfiltered_html ไม่เพียงพอที่จะช่วยให้มีบทบาทอื่นที่ไม่ใช่ผู้ดูแลระบบหรือ Super admin ที่ความสามารถในการฝังโพสต์ ฯลฯ ที่สำคัญคือการยกเลิกการกรอง / hooking KSES Wordpress: kses_remove_filters ()
Jonnybojangles

บล็อกรายละเอียด: goo.gl/xNuafH
Suresh Kamrushi

คำตอบ:


14

คุณสามารถใช้คลาสWP_Role

// get the the role object
$role_object = get_role( $role_name );

// add $cap capability to this role object
$role_object->add_cap( $capability_name );

// remove $cap capability from this role object
$role_object->remove_cap( $capability_name );

ดังนั้นเพื่อตอบคำถามเดิมของคุณเกี่ยวกับวิธีการเปิดใช้งานผู้ดูแลระบบให้ใส่แท็ก SCRIPT และ IFRAME ลงในเนื้อหาโพสต์คุณกำลังมองหาความสามารถในการ

// get the the role object
$admin_role = get_role( 'administrator' );
// grant the unfiltered_html capability
$admin_role->add_cap( 'unfiltered_html', true );

หรือคุณสามารถเรียกใช้สิ่งนี้หนึ่งครั้งในฟังก์ชั่นของคุณ:

/* Roles & Capabilities */
add_role('professional', 'Professional User', array(
    'read' => true, // True allows that capability, False specifically removes it.
    'edit_posts' => true,
    'delete_posts' => true,
    //'edit_published_posts' => true,
    //'publish_posts' => true,
    //'edit_files' => true,
    'upload_files' => true //last in array needs no comma!
));

ขอบคุณ Philip ในเรื่องเกี่ยวกับคลาส WP_Role เมื่อใดควรรันโค้ด? ฉันคาดเดาว่าสิ่งนี้จะส่งผลกระทบต่อบทบาทของวัตถุระดับโลกหรือไม่ ฉันดีใจที่คุณนำโค้ดกลุ่มที่สองขึ้นมาซึ่งกล่าวว่าฉันสามารถเรียกใช้สิ่งนี้ได้ครั้งเดียวในไฟล์ฟังก์ชั่นของฉัน ฉันพบวิธีแก้ไขปัญหาคล้าย ๆ กันในฟอรัม Wordpress บางแห่ง แต่ฉันพบว่ามันแปลกที่จะเรียกใช้ครั้งเดียวในชุดรูปแบบหรือปลั๊กอินโดยเฉพาะอย่างยิ่งถ้าไม่มีการตรวจสอบว่ามีการเปลี่ยนแปลงอยู่หรือไม่ บางทีการเขียนบทอาจไม่มีความสำคัญ ในการตรวจสอบความสามารถ vs เพียงแค่เขียนความสามารถไปยังบทบาทตามตัวอย่างแรกของคุณแสดง
Jonnybojangles

ฉันสนใจในวิธีที่คุณจะใช้คลาส WP_Role ถ้าคุณมีเวลาบอกเราได้ ขอบคุณ
Osu

1
@Jonnybojagles & @Osu ลองดูนี่: สุดยอดคู่มือสำหรับบทบาทและความสามารถgaryc40.com/2010/04/ultimate-guide-to-roles-and-capabilities
Philip

ฉันได้อ่านบทความนั้นในการติดตามของฉันแล้ว แต่ฉันก็มีโอกาสที่จะทำมันให้สำเร็จอีกครั้งขอบคุณ! ในที่สุดหลังจากการแยกปลั๊กอินที่ไม่มีการกรอง -mu (ดังกล่าวข้างต้นโดย Rev. Voodoo) ในที่สุดฉันก็พบว่าการเปลี่ยนบทบาทโดยการเพิ่มความสามารถนั้นไม่เพียงพอ ฉันต้องการกรองฟิลเตอร์ KSES ของ Wordpress
Jonnybojangles

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

2

เพื่ออนุญาตให้มีบทบาทอื่นนอกเหนือจาก Super Admin หรือ Admin (ขึ้นอยู่กับว่าการติดตั้ง Wordpress นั้นเป็นเครือข่าย / MU instance หรือไม่) เพื่อเพิ่ม html ที่ไม่มีการกรองในโพสต์หรือแสดงความคิดเห็นต้องใช้ตัวกรอง KSES ของ Wordpress

ตรวจสอบว่าผู้ใช้มีความสามารถเฉพาะ

if ( current_user_can( 'unfiltered_html' ) ) {  }

ถ้าเป็นเช่นนั้นจะลบ KSES

kses_remove_filters();

ฟังก์ชั่นนี้ได้ถูกรวมไว้ใน unfiltered-mu แล้วทำให้ผู้ดูแลระบบและบรรณาธิการสามารถเพิ่ม html ที่ไม่มีการกรองได้


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