ฉันมีข้อกำหนดที่คล้ายกันซึ่งฉันไม่ควรอนุญาตให้ผู้ใช้เข้าถึงหน้า author.php ตามบทบาทที่ผู้ใช้เข้ามาฉันลงทะเบียนการกระทำ template_redirect เพื่อตรวจสอบและเปลี่ยนเส้นทางไปยังหน้า 404 ก่อนที่จะโหลดหน้าจริง
การลงทะเบียน:
add_action( 'template_redirect', [ $this, 'handle_inactive_users']);
handler:
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();