दिए गए कुछ उत्तर अधिकांश स्थितियों में ठीक हो सकते हैं, लेकिन मुझे लगता है कि उनमें से कोई भी वारंटी बिल्कुल वैसा नहीं करता जैसा कि पूछा जाता है क्योंकि कोई भी उत्तर उपयोगकर्ता भूमिकाओं की जांच नहीं करता है, वे क्षमताओं की जांच करते हैं और क्षमताओं को सौंपा जा सकता है और प्रपत्र भूमिकाएं हटा दी जा सकती हैं। इसलिए, सटीक उत्तर देने के लिए, उपयोगकर्ता भूमिकाओं की जाँच होनी चाहिए, न कि क्षमताओं की:
add_action( 'admin_init', 'allow_admin_area_to_admins_only');
function allow_admin_area_to_admins_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
$user = wp_get_current_user();
if( empty( $user ) || !in_array( "administrator", (array) $user->roles ) ) {
//Redirect to main page if no user or if the user has no "administrator" role assigned
wp_redirect( get_site_url( ) );
exit();
}
}
यदि आप जांचना चाहते हैं कि उपयोगकर्ता के पास "manage_options" क्षमता है, तो आप कर सकते हैं। वास्तव में, यह ज्यादातर मामलों में सबसे अच्छा विकल्प है। हालाँकि यह क्षमता डिफ़ॉल्ट रूप से व्यवस्थापक उपयोगकर्ताओं से संबंधित है, क्षमता को व्यवस्थापक भूमिका से हटाया जा सकता है या इसे अन्य उपयोगकर्ता भूमिकाओं के लिए असाइन किया जा सकता है। इसीलिए, ज्यादातर मामलों में, उपयोगकर्ता भूमिका की जाँच करने से बेहतर है कि उपयोगकर्ता क्या कर सकता है या नहीं कर सकता है। इसलिए, ज्यादातर मामलों में क्षमताओं की जांच करना चुना हुआ तरीका होना चाहिए, लेकिन आप इस अवधारणा को स्पष्ट करते हैं और अपनी स्थिति और उद्देश्य के लिए सबसे अच्छा विकल्प चुनते हैं।
add_action( 'admin_init', 'admin_area_for_manage_options_only');
function admin_area_for_manage_options_only() {
if( defined('DOING_AJAX') && DOING_AJAX ) {
//Allow ajax calls
return;
}
if( ! current_user_can( "manage_options" ) ) {
//Redirect to main page if the user has no "manage_options" capability
wp_redirect( get_site_url( ) );
exit();
}
}