वेनिला WP कोर लोड के दौरान वर्तमान उपयोगकर्ता सेट किया जा रहा है $wp-init()
जिसमें थीम लोड के बाद और init
हुक से पहले है । यह कार्यक्षमता के अच्छे अभ्यास के अनुरूप है, जो init
बाद में या उससे कम हो जाता है।
हालांकि संबंधित कार्यों को कॉल करना भी आम बात है, जैसे कि current_user_can()
पहले की तुलना में। यह प्लगइन्स के लिए आवश्यक परिभाषा है जो लोड प्रक्रिया के पुराने चरणों के साथ काम करता है (मेरा टूलबार थीम स्विचर प्लगइन एक उदाहरण होगा)।
दस्तावेज़ीकरण इस अभ्यास के लिए या उसके खिलाफ कोई दावा नहीं करता है (जो मुझे मिल सकता है)।
हालांकि कुछ प्लगइन्स उपयोगकर्ता-संबंधित कार्यक्षमता में हुक करने लगते हैं और 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' );
}
त्वरित प्रदर्शन के लिए इसे कोर की परिभाषा में फेंक दें current_user_can()
:
function current_user_can( $capability ) {
if ( ! did_action('after_setup_theme') ) {
echo wp_debug_backtrace_summary();
}
इस स्थिति में "सही" कौन है? क्या उपयोगकर्ता-संबंधी कार्यों के पहले अनुमति / निषिद्ध उपयोग के बारे में एक विहित निर्धारण है init
?