คำถามติดแท็ก capabilities

WordPress ใช้แนวคิดเรื่อง Roles ซึ่งออกแบบมาเพื่อให้เจ้าของไซต์สามารถควบคุมสิ่งที่ผู้ใช้ทำได้และไม่สามารถทำได้ภายในไซต์ แต่ละบทบาทได้รับอนุญาตให้ทำงานชุดหนึ่งที่เรียกว่า Capabilities

5
รับรายชื่อบทบาทที่มีอยู่ในปัจจุบันบนไซต์ WordPress หรือไม่?
เมื่อเขียนปลั๊กอิน WordPress มักจะต้องตั้งค่าตัวเลือกสำหรับบทบาทบนไซต์ที่มีการเข้าถึงฟังก์ชันการทำงานหรือเนื้อหาบางอย่าง ในการทำเช่นนี้ปลั๊กอิน dev จำเป็นต้องดึงข้อมูลรายการบทบาทที่มีอยู่บนไซต์เพื่อใช้ในตัวเลือก เนื่องจากสามารถสร้างบทบาทที่กำหนดเองได้เราจึงไม่สามารถถือว่าบทบาทเริ่มต้นเป็นบทบาทที่มีอยู่เท่านั้น วิธีที่ดีที่สุดในการดึงรายการคืออะไร

4
Editor สามารถสร้างผู้ใช้ใหม่ยกเว้นผู้ดูแลระบบ
ฉันตั้งค่าเว็บไซต์ WordPress สำหรับลูกค้าแล้ว ลูกค้ามีบทบาท Editor แต่ฉันได้ติดตั้งปลั๊กอินสมาชิกและให้ความสามารถแก่ลูกค้าในการเพิ่มผู้ใช้ใหม่ในผู้ดูแลระบบ WP มันใช้งานได้ดี คำถามที่ฉันมีคือฉันต้องการให้ลูกค้ามีความสามารถในการสร้างผู้ใช้ใหม่เช่นเดียวกับบทบาทของผู้สนับสนุนสมาชิกผู้แก้ไขและผู้แต่ง แต่ไม่ใช่ผู้ดูแลระบบ ผู้ใช้ใหม่ที่ลูกค้าสร้างไม่ควรมีบทบาทผู้ดูแลระบบ เป็นไปได้หรือไม่ที่จะซ่อนตัวเลือกนี้ ขอบคุณ Vayu

4
ความสามารถและประเภทโพสต์ที่กำหนดเอง
ฉันมีประเภทโพสต์ที่กำหนดเองที่ฉันต้องการ จำกัด การเข้าถึงบทบาทบางอย่าง แต่ฉันได้เพิ่มเนื้อหาโดยใช้ประเภทโพสต์ที่กำหนดเองและตอนนี้ฉันต้องทำให้พวกเขาถูก จำกัด The ตี้ _type คือ 'โพสต์' 'capability_type' => 'post' มีอะไรดีเมื่อเนื้อหาปรากฏในแบ็กเอนด์อย่างไรก็ตามตอนนี้ทันทีที่ฉันเพิ่มความสามารถใด ๆ ที่เนื้อหาหายไปจากแบ็กเอนด์? ฉันได้ลองปรับแต่งประเภทความสามารถเพื่อรวมคำจำกัดความพหูพจน์เพื่อสร้างของตัวเอง แต่ทันทีที่ฉันลบหรือเปลี่ยนประเภทความสามารถมันหายไป! รหัสเต็ม: add_action( 'init', 'register_cpt_gallery' ); function register_cpt_gallery() { $labels = array( 'name' => _x( 'Galleries', 'gallery' ), 'singular_name' => _x( 'Gallery', 'gallery' ), 'add_new' => _x( 'Add New', 'gallery' ), 'add_new_item' => …


3
ฉันจะสร้างความสามารถของบทบาทที่กำหนดเองได้อย่างไร
ฉันต้องการสร้างความสามารถที่กำหนดเองสำหรับการเข้าถึงส่วนต่อประสานของปลั๊กอินของฉัน ปลั๊กอินควรจัดการเพิ่มความสามารถนี้ให้กับบัญชีผู้ดูแลระบบทั้งหมดเมื่อเปิดใช้งานหรือไม่ ถ้าเป็นเช่นนั้น: WordPress จัดการเพิ่มความสามารถให้กับผู้ดูแลระบบทั้งหมดของบล็อกย่อยและผู้ดูแลระบบขั้นสูงในการติดตั้งแบบหลายไซต์หรือไม่หรือว่าฟังก์ชั่นนั้นต้องจัดการโดยปลั๊กอินหรือไม่?

4
วิธีสร้างบทบาทการโคลนนิ่งในเวิร์ดเพรส
วิธีสร้างบทบาทใหม่ด้วยความสามารถที่เหมือนกันของบทบาทที่มีอยู่ เช่นฉันต้องการสร้างบทบาทใหม่ที่มีความสามารถเหมือนกันกับผู้ดูแลระบบหรือบรรณาธิการและอื่น ๆ ..

6
เป็นไปได้ที่จะซ่อน UI ประเภทเมนู / โพสต์ที่กำหนดเองจากบทบาทผู้ใช้เฉพาะหรือไม่
สิ่งที่ฉันต้องการทำคือซ่อน UI สำหรับประเภทโพสต์ที่กำหนดเองจากบทบาทผู้ใช้ที่ระบุ ... ก่อนหน้านี้ฉันเคยพบแหล่งข้อมูลมากมายเกี่ยวกับวิธีปิดการเข้าถึงโดยใช้ CPT เหล่านั้น แต่ไม่มีอะไรที่ช่วยให้คุณซ่อน CPT UI ได้อย่างสมบูรณ์ ทั้งหมดเข้าด้วยกันขึ้นอยู่กับสิ่งที่ผู้ใช้เข้าสู่แดชบอร์ด นี่เป็นสิ่งสำคัญเนื่องจากฉันต้องการให้ลูกค้าแยกแยะประเภทโพสต์ที่กำหนดเองสำหรับร้านค้าอย่างสมบูรณ์และหากพวกเขาสามารถเห็นร้านค้า CPT UI ในแดชบอร์ดก็ยังคงไม่ได้สร้างความแตกต่างหากความสามารถของพวกเขาถูก จำกัด พวกเขาสามารถเพิ่มผลิตภัณฑ์ด้วยตนเองได้อย่างไร ID ชอบที่จะไม่ใช้ปลั๊กอินนี้ แต่ถ้ามีบางอย่างที่สามารถทำกลอุบายในแบบที่ไม่ป่องๆ ขอบคุณสำหรับความช่วยเหลือของคุณ SB

7
เลือกสมาชิกในฐานะผู้เขียนโพสต์ในแผงการดูแลระบบ?
ฉันต้องการที่จะสามารถเลือกผู้สมัครสมาชิกผู้เขียนโพสต์ในผู้ดูแลระบบเพื่อให้มันแสดงชื่อของพวกเขาเป็นที่เขียนโพสต์ แต่ฉันไม่ต้องการให้สิทธิ์เพิ่มเติมใด ๆ (ถ้าพวกเขาเข้าสู่ระบบสิ่งเดียวที่พวกเขาสามารถเข้าถึงได้คือ โปรไฟล์ของพวกเขา) มีวิธีง่ายๆในการทำเช่นนี้โดยไม่ต้องเปลี่ยนบทบาทและความสามารถหรือไม่? ขอบคุณ

4
ลบความสามารถสำหรับผู้ใช้รายอื่นเพื่อดูผู้ดูแลระบบในรายการผู้ใช้หรือไม่
( หมายเหตุของผู้ดำเนินรายการ:ชื่อดั้งเดิมคือ "ลบผู้ดูแลออกจากเมนูผู้ใช้") ฉันได้สร้างบทบาทผู้ดูแลระบบไคลเอนต์ซึ่งเป็นเครื่องมือแก้ไขที่มีความสามารถในการเพิ่ม / ลบผู้ใช้ บทความ" Editor สามารถสร้างผู้ใช้ใหม่ยกเว้นผู้ดูแลระบบ "เป็นเลิศในการช่วยให้บทบาทผู้ดูแลระบบไคลเอนต์ใหม่ของฉันไม่สามารถแก้ไขหรือสร้างผู้ใช้ True admin อย่างไรก็ตามสิ่งที่เหมาะสมที่สุดคือการซ่อนผู้ดูแลระบบจากผู้ดูแลระบบของลูกค้าเมื่อพวกเขาดูผู้ใช้ ฉันต้องการให้พวกเขา"เชื่อ"ว่าพวกเขาเป็นผู้ดูแลเว็บไซต์ของพวกเขา แต่ฉันไม่ต้องการให้พวกเขาสามารถดูบทบาท / ผู้ใช้ของฉันได้โดยการซ่อนบทบาท"ผู้ดูแลระบบ"จากพวกเขาเมื่อพวกเขาอยู่ใน"ผู้ใช้"แผงหน้าปัด.

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

6
ฉันจะทำให้ทุกคนสามารถเข้าถึงโพสต์ฉบับร่างได้อย่างไร
ฉันมีโพสต์ที่ไม่ได้เผยแพร่หลายโพสต์ในเว็บไซต์ Wordpress ของฉันและฉันพยายามทำให้ผู้ใช้ทั่วไป (ที่ไม่ได้เข้าสู่ระบบ) สามารถเข้าถึงได้โดยใช้ post slugs ( site.com/post-here) ฉันเข้าใจว่าอาจไม่ใช่วิธีปฏิบัติที่ดีที่สุด แต่เพื่อจุดประสงค์พิเศษของฉันสิ่งนี้จำเป็นต้องทำ ฉันได้ลองเพิ่มข้อมูลโค้ดต่อไปนี้ในfunctions.phpไฟล์ของฉัน: function enable_view_drafts() { $role = get_role( 'subscriber' ); $role->add_cap( 'read_private_posts' ); $role->add_cap( 'edit_posts' ); } add_action( 'after_setup_theme', 'enable_view_drafts'); ฉันได้พยายามยังเบ็ดแทนinit after_setup_themeไม่มีโชค. ความเข้าใจของฉันคือการเปลี่ยนแปลงบทบาทจะถูกบันทึกลงในฐานข้อมูลดังนั้นจะต้องทำเพียงครั้งเดียว นั่นคือเหตุผลที่ฉันใช้after_setup_themehook เพื่อเรียกใช้ฟังก์ชัน แต่เมื่อฉันพยายามเข้าถึงหน้านี้ในฐานะผู้ใช้ทั่วไปฉันกำลังแสดงหน้า 404 แทนที่จะแสดงเนื้อหาของโพสต์ ฉันได้ลองโหลด URL ตัวอย่าง ( site.com/?p=212&preview=true) แล้ว แต่ก็ไม่ได้ผล นี่คือการคาดเดาของฉัน: ผู้ใช้ปกติมีไม่เพียงพอที่capsจะอ่านโพสต์แบบร่าง การทดสอบและการดูโพสต์แบบร่างบนส่วนหน้าเป็นไปไม่ได้สำหรับผู้ใช้ (รวมถึงผู้ดูแลระบบ) ฉันต้องทำการเปลี่ยนแปลงอะไรเพื่อที่จะบรรลุสิ่งที่ฉันพยายามทำ …

1
add_role () ทำงานเพียงครั้งเดียว?
ฉันประหลาดใจที่ค้นพบว่า add_role () แก้ไขฐานข้อมูลและล้มเหลวหากมีบทบาทอยู่แล้ว มีความหมายสองประการที่นี่ร้ายแรงกว่าอีกข้อหนึ่ง: 1) หากคุณกำลังพัฒนาและอัปเดตรหัส add_role ของคุณคุณต้องลบ remove_role () 2) ทันทีที่คุณมีมันถูกต้องคุณไม่ควรรันโค้ดนั้น อีกครั้ง ดังนั้นโดยทั่วไปฉันวาง add_role () ไว้ในตะขอแอ็คชัน wp_loaded และเนื่องจากฉันอยู่ระหว่างการพัฒนาฉันได้เพิ่ม remove_role () ก่อนหน้า add_role ของฉันด้วยดังนั้นฉันจึงมั่นใจได้ว่าถ้าฉันแก้ไขรายการตัวพิมพ์ใหญ่ก็จะมีผลจริง แต่ชัดเจนว่าตอนนี้ถูกเรียกใช้ทุกครั้งที่มีการเข้าถึงหน้าเว็บของบล็อก โอเคฉันสามารถใส่ไว้ในการกระทำของผู้ดูแลระบบเท่านั้นหรือฉันสามารถสร้างหน้าปลั๊กอินได้ภายใต้ผู้ใช้หรือเครื่องมือที่บทบาทนี้สามารถสร้างได้ครั้งเดียว ฉันคิดว่าฉันหวังว่าจะมีทางออกที่ง่ายกว่าและสง่างามกว่าอยู่ที่นั่น ฉันไม่คิดว่าจะมีการกระทำแบบ run_once อยู่ที่นั่นหรือ หรือวิธีปฏิบัติที่ดีที่สุดเพียงเพิ่มบทบาทแล้วใช้ add_cap () หลายครั้ง และถึงอย่างนั้นฉันก็จินตนาการว่า add_cap กำลังเข้าถึงฐานข้อมูล แค่คิดในแง่ของวิธีที่ดีที่สุดในการลดการเข้าถึง db ที่ไม่จำเป็น อะไรคือแนวทางปฏิบัติที่ดีที่สุดของคุณ?

3
เวลาที่ถูกต้องในการใช้ current_user_can () และฟังก์ชั่นที่เกี่ยวข้องคืออะไร?
ในระหว่างการโหลดแกน vanilla WP ผู้ใช้ปัจจุบันจะถูกตั้งค่า$wp-init()ซึ่งอยู่หลังโหลดธีมและก่อนinitฮุก สิ่งนี้สอดคล้องกับแนวปฏิบัติที่ดีในการใช้งานฟังก์ชั่นที่จะเชื่อมinitต่อหรือใหม่กว่า อย่างไรก็ตามมันก็เป็นเรื่องธรรมดาที่จะเรียกฟังก์ชั่นที่เกี่ยวข้องเช่นcurrent_user_can() ก่อนหน้านั้น มันเป็นข้อกำหนดที่จำเป็นสำหรับปลั๊กอินที่ทำงานกับขั้นตอนการโหลดก่อนหน้านี้ (ปลั๊กอิน Toolbar Theme Switcher ของฉันจะเป็นตัวอย่าง) เอกสารทำให้ไม่มีการเรียกร้องหรือต่อต้านการปฏิบัตินี้ (ที่ฉันสามารถหาได้) อย่างไรก็ตามปลั๊กอินบางตัวดูเหมือนจะเชื่อมโยงเข้ากับฟังก์ชั่นที่เกี่ยวข้องกับผู้ใช้และคาดว่าจะมีการโพสต์initตลอดเวลา ตัวอย่างเช่น bbPress จะแจ้งให้ทราบดังต่อไปนี้: // If the current user is being setup before the "init" action has fired, // strange (and difficult to debug) role/capability issues will occur. if ( ! did_action( 'after_setup_theme' ) ) …

4
ฉันจะรับรายชื่อผู้ใช้ตามบทบาทได้อย่างไร
ฉันจะรับรายชื่อผู้ใช้ทั้งหมดที่อยู่ใน WordPress โดยบทบาทหรือความสามารถของพวกเขาได้อย่างไร? ตัวอย่างเช่น: แสดงall subscribers listใน WordPress แสดงall authors listใน WordPress แสดงall editors listใน WordPress

2
ฉันควรดำเนินการอย่างไรเมื่อเพิ่มบทบาทและความสามารถ
ฉันจะใช้ add_role () และ $ role-> add_cap () เพื่อตั้งค่าบทบาทที่กำหนดเองใหม่และแนบความสามารถใหม่กับบทบาทที่มีอยู่ ฉันสงสัยว่าที่ที่ดีที่สุดในการทำเช่นนี้คืออะไร? เห็นได้ชัดว่าฉันสามารถทำมันได้โดยตรงในฟังก์ชั่น PHP และสามารถทำได้ด้วย แต่นี่เป็นวิธีปฏิบัติที่ดีที่สุดใช่ไหม ฉันต้องทำสิ่งนี้กับ admin_init หรือไม่ หรือฉันควรจะทำใน init? ฉันไม่แน่ใจทั้งหมดว่าแนวทางปฏิบัติที่ดีที่สุดคืออะไรโดยใช้ init action hooks แทนที่จะปล่อยให้การเรียกใช้ฟังก์ชันโดยตรงภายใน functions.php ขอบคุณสำหรับข้อมูลของคุณ!

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