मेरी भी ऐसी ही आवश्यकता थी, जहाँ मुझे उपयोगकर्ताओं को लेखक की पहुँच की अनुमति नहीं देनी चाहिए। एक उपयोगकर्ता जिस भूमिका में था, उसके आधार पर मैंने पृष्ठ देखा। मैं अपनी जाँच करने के लिए template_redirect क्रिया पंजीकृत करता हूँ और वास्तविक पृष्ठ लोड होने से पहले ही 404 पृष्ठ पर पुनर्निर्देशित कर देता हूँ।
पंजीकरण:
add_action( 'template_redirect', [ $this, 'handle_inactive_users']);
हैंडलर:
public function handle_inactive_users() {
global $wp_query;
if ( $wp_query->is_author() ) {
$user = $wp_query->get_queried_object();
if ( is_a( $user, \WP_User::class ) && $user->has_cap( 'inactive' ) ) {
$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();
}
}
}
यदि आपने टेम्प्लेट भाग के मध्य में केवल निम्न कोड स्निपेट का उपयोग करना चुना है, तो हो सकता है कि पृष्ठ पहले से ही आंशिक रूप से प्रस्तुत किया गया हो और आपको वास्तव में 404 पृष्ठ पर पुनर्निर्देशित नहीं किया गया हो। template_redirect
कार्रवाई में ऐसा करने के लिए बेहतर है -
$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();