Apakah ada cara untuk menampilkan halaman 404 jika pengguna yang masuk saat ini tidak memiliki izin yang tepat untuk melihat halaman? Saya mencari metode PHP, semacamnya
if( !current_user_can('administrator') ) { show_404(); exit(); }
Saya telah berpikir tentang menggunakan pengalihan, tetapi saya ingin menjaga url tetap sama.
Jawaban:
Saya dapat menampilkan kesalahan 404 dengan menggunakan kode berikut di header saya.
Untuk memecahnya
$wp_query->set_404()
:: memberi tahu wp_query ini adalah 404, ini mengubah judulstatus_header()
: mengirim header HTTP 404get_template_part()
: menampilkan template 404sumber
http_status_code(404);
sebelum mengatur template untuk memastikan bahwa header sudah benar (yang secara signifikan lebih cepat daripadastatus_header( 404 );
fungsi wordpress ). Jika Anda khawatir dengan peringkat halaman, Anda juga harus meletakkanDisallow
aturan di robots.txt Anda untuk menunjukkan bahwa itu bukan sumber daya publik.Mengapa Anda tidak membuat halaman yang menampilkan pesan kesalahan dan kemudian mengarahkan pengguna ke halaman itu? Berikut adalah cara sederhana untuk mencapai itu:
Buka
404.php
file dan tambahkan baris ini di atasnya:Buat halaman dengan
404 Page
templat. Lalu arahkan ulang pengguna:Alasan Anda harus menggunakan halaman untuk permintaan 404 adalah: di halaman WP 404 sebenarnya adalah halaman yang tidak ada , WP harus mencari semua kontennya sebelum mengembalikan halaman 404 dan pekerjaan itu adalah pemborosan sumber daya. Menggunakan halaman pra-konfigurasi yang dapat membantu Anda menjalankan blog Anda lebih cepat.
sumber
http_response_code(404); exit();
. Jika Anda menginginkan halaman, maka gunakanget_template_part( 404 );
sebelum keluar. Itu juga jauh lebih cepat daripada fungsi wordpress.Anda dapat menulis kode ini ke file 404.php di direktori tema yang sebenarnya digunakan (wp-content / themes /..../ 404.php) :
Kode ini harus dimulai dari awal file (tanpa karakter apa pun sebelumnya) .
Tautan ke asli: Cara Mengarahkan halaman 404 Anda ke Halaman Beranda di WordPress
sumber
Location: xxx
menetapkan header 301, yang memberitahu crawler bahwa sebenarnya ada sumber daya yang valid, dan membunuh peringkat Anda ketika mereka menentukan bahwa tidak ada.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:
Handler:
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 -sumber