Есть ли способ показать страницу 404, если текущий вошедший в систему пользователь не имеет права на просмотр страницы? Я ищу метод PHP, что-то вроде
if( !current_user_can('administrator') ) { show_404(); exit(); }
Я думал об использовании перенаправления, но я хотел бы сохранить тот же URL-адрес.
Ответы:
Я смог отобразить ошибку 404, используя следующий код в моем заголовке.
Чтобы разбить его
$wp_query->set_404()
:: сообщает wp_query, что это 404, это меняет заголовокstatus_header()
: отправляет заголовок HTTP 404get_template_part()
: отображает шаблон 404источник
http_status_code(404);
перед настройкой шаблона, чтобы убедиться, что заголовок правильный (что значительно быстрее, чемstatus_header( 404 );
функция wordpress ). Если вас интересует рейтинг страниц, вы должны также добавитьDisallow
в свой файл robots.txt правило, указывающее, что он не является общедоступным ресурсом.Почему бы вам не создать страницу с сообщением об ошибке, а затем перенаправить пользователя на эту страницу? Вот простой способ добиться этого:
Откройте
404.php
файл и добавьте эти строки вверху:Создать страницу с
404 Page
шаблоном. Затем перенаправьте пользователей:Причина, по которой вы должны использовать страницу для запроса 404, заключается в том, что в WP 404 страница на самом деле является страницей, которая не существует , WP вынуждена искать весь свой контент перед возвратом страницы 404, и эта работа - пустая трата ресурсов. Использование предварительно настроенной страницы, которая может помочь вам быстрее вести блог.
источник
http_response_code(404); exit();
. Если вы хотите страницу, то используйтеget_template_part( 404 );
перед выходом. Это также намного быстрее, чем любая функциональность WordPress.Вы можете записать этот код в файл 404.php в фактически используемом каталоге тем (wp-content / themes /..../ 404.php) :
Этот код должен начинаться с начала файла (без каких-либо символов перед) .
Ссылка на оригинал: Как перенаправить страницу 404 на домашнюю страницу в WordPress
источник
Location: xxx
устанавливает заголовок 301, который сообщает сканерам, что на самом деле есть действительный ресурс, и убивает ваш рейтинг, когда они определяют, что его нет.У меня было такое же требование, когда я не должен позволять пользователям получать доступ к странице author.php в зависимости от роли, в которой находился пользователь. Я регистрирую действие template_redirect, чтобы выполнить свои проверки и перенаправить на страницу 404 даже до загрузки самой страницы.
Постановка на учет:
Обработчик:
Если вы решили использовать только следующий фрагмент кода в середине части шаблона, возможно, страница уже частично отрисована, и вы фактически не перенаправлены на страницу 404. Так что лучше делать это в
template_redirect
действии -источник