Saya memiliki persyaratan yang sama di mana saya tidak boleh membiarkan pengguna mengakses halaman author.php berdasarkan peran yang digunakan pengguna. Saya mendaftarkan tindakan template_redirect untuk melakukan pemeriksaan dan mengarahkan ke halaman 404 bahkan sebelum halaman yang sebenarnya dimuat.
Pendaftaran:
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();
}
}
}
Jika Anda memilih untuk hanya menggunakan snipet kode berikut di tengah-tengah bagian templat, halaman mungkin telah dirender sebagian dan Anda tidak benar-benar diarahkan ke halaman 404. Jadi lebih baik melakukannya dalam template_redirect
aksi -
$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();