ในระหว่างการโหลดแกน 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' ) ) {
_doing_it_wrong( __FUNCTION__, __( 'The current user is being initialized without using $wp->init().', 'bbpress' ), '2.3' );
}
สำหรับการสาธิตอย่างรวดเร็วให้คำจำกัดความของ core current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
ใคร "ถูกต้อง" ในสถานการณ์นี้ มีการกำหนดที่ยอมรับเกี่ยวกับการอนุญาต / ห้ามการใช้งานฟังก์ชั่นที่เกี่ยวข้องกับผู้ใช้มาก่อนinit
หรือไม่?