遇到404错误时,可以使用404.php模板文件来呈现自定义错误消息。模板层次结构文章中对此进行了记录。
我的目的是为401、403和500错误创建自定义错误页面。我曾尝试在主题目录中创建401.php,403.php和500.php文件,但这不起作用。
如何在WordPress中创建自定义的401、403和500错误页面?
遇到404错误时,可以使用404.php模板文件来呈现自定义错误消息。模板层次结构文章中对此进行了记录。
我的目的是为401、403和500错误创建自定义错误页面。我曾尝试在主题目录中创建401.php,403.php和500.php文件,但这不起作用。
如何在WordPress中创建自定义的401、403和500错误页面?
Answers:
错误页面通过.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.添加页面:
然后,您需要进入仪表板,然后像创建任何普通页面一样创建页面(“仪表板”>“页面”>“新建”)。它们可以按照您希望的名称命名,只需确保该段与下面的函数相同(段:error-401,error-403,error-404,error-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!
注意!上面的功能说明
在移动网站或更改URL结构时
上面的函数要记住的一点是,尽管在将它们写入HTACCESS文件之前会检查ErrorDocument指令是否已经存在,但是如果您更改或移动博客以反映更新的页面位置,它将不会重写ErrorDocument指令。您需要首先删除HTACCESS文件中现有的ErrorDocument指令,然后重新运行此函数以创建新的指令。
纠正挂钩仅触发一次功能
要注意的另一件事是此功能,使用该init
操作将在每次页面加载时运行,这是超级不必要和浪费的,所以我建议将其添加到插件中,并使用register_activation_hook
相当,这样在激活插件时仅触发一次
文件权限
同样,当您使用上述功能时,.htaccess也必须是可写的,因此请确保它具有正确的文件权限,例如CHMOD777。