Страницы ошибок обслуживаются через .HTACCESS, если вы используете Apache, вы бы использовали ErrorDocument
директиву и добавили к ней статус и URL.
Так это будет выглядеть в вашем файле .htaccess:
ErrorDocument 401 http://yourwebsite.com/error-401
ErrorDocument 403 http://yourwebsite.com/error-403
ErrorDocument 500 http://yourwebsite.com/error-500
Вы можете использовать следующую функцию ниже. Это будет динамически добавлять то, что вам нужно, в файл HTACCESS, или вы можете сделать это вручную.
1. Добавить страницы:
Затем вам нужно будет зайти в свою панель инструментов и создать страницы, как и любую обычную страницу («Панель инструментов»> «Страницы»> «Создать»). Они могут называться как угодно, просто убедитесь, что слаг такой же, как в приведенной ниже функции (Слаг: ошибка-401, ошибка-403, ошибка-404, ошибка-500). Также вы можете использовать шаблон страницы для создания любого макета и стиля, который вы хотите для этих конкретных страниц. Следуйте инструкциям WordPress Codex для этого.
2. Добавить функцию:
// Create Custom Error Pages in WordPress using HTACCESS
function royal_custom_error_pages() {
// Get HTACCESS path & dynamic website url
$htaccess_file = '.htaccess';
$website_url = get_bloginfo('url').'/';
// Check & prevent writing error pages more than once
$check_file = file_get_contents($htaccess_file);
$this_string = '# BEGIN WordPress Error Pages';
if( strpos( $check_file, $this_string ) === false) {
// Setup Error page locations dynamically
$error_pages .= PHP_EOL. PHP_EOL . '# BEGIN WordPress Error Pages'. PHP_EOL. PHP_EOL;
$error_pages .= 'ErrorDocument 401 '.$website_url.'error-401'.PHP_EOL;
$error_pages .= 'ErrorDocument 403 '.$website_url.'error-403'.PHP_EOL;
$error_pages .= 'ErrorDocument 404 '.$website_url.'error-404'.PHP_EOL;
$error_pages .= 'ErrorDocument 500 '.$website_url.'error-500'.PHP_EOL;
$error_pages .= PHP_EOL. '# END WordPress Error Pages'. PHP_EOL;
// Write the error page locations to HTACCESS
$htaccess = fopen( $htaccess_file, 'a+');
fwrite( $htaccess, $error_pages );
fclose($htaccess);
}
}
add_action('init','royal_custom_error_pages'); // This will run the function everytime, not ideal!
// register_activation_hook( __FILE__, 'royal_custom_error_pages' ); // Using a plugin, runs only once!
NB !! ЗАМЕЧАНИЯ О ВЫШЕ ФУНКЦИИ
При перемещении вашего сайта или изменении структуры URL
Следует помнить, что при использовании вышеуказанной функции перед тем, как записать их в ваш файл HTACCESS, он проверяет, существуют ли директивы ErrorDocument, но не будет перезаписывать директивы ErrorDocument, если вы измените или переместите свой блог, чтобы отразить обновленные местоположения страниц. Вам нужно будет сначала удалить существующие директивы ErrorDocument в вашем файле HTACCESS, а затем повторно запустить эту функцию, чтобы создать новые директивы.
Правильный крюк, чтобы запустить функцию ТОЛЬКО ОДИН РАЗ
Еще init
одна вещь, которую стоит отметить, - эта функция, использующая действие, которое будет запускаться каждый раз, когда загружаются ваши страницы, что является супер ненужным и расточительным, поэтому я бы предложил добавить его в плагин и использовать его register_activation_hook
, чтобы он срабатывал только один раз при активации плагина.
Файловые права
Также обязательно, чтобы ваш .htaccess был доступен для записи при использовании вышеуказанной функции, поэтому убедитесь, что он имеет правильные права доступа к файлу, что-то вроде CHMOD777.