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エラーページを作成するにはどうすればよいですか?
回答:
エラーページは.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 !! 上記の機能に関する注意事項
Webサイトを移動するとき、またはURL構造を変更するとき
上記の関数で覚えておくべきことは、HTACCESSファイルに書き込む前にErrorDocumentディレクティブが既に存在するかどうかを確認しますが、更新されたページの場所を反映するようにブログを変更または移動してもErrorDocumentディレクティブは書き換えられません。まず、HTACCESSファイル内の既存のErrorDocumentディレクティブを削除してから、この関数を再実行して新しいディレクティブを作成する必要があります。
フックを修正して関数を1回だけ起動する
もう1つ注意すべきことは、この関数は、init
ページを読み込むたびにアクションを使用することであり、これは非常に不必要で無駄ですので、プラグインに追加してregister_activation_hook
プラグインのアクティベーションで一度だけ起動することをお勧めします
ファイル許可
また、上記の関数を使用するときは.htaccessが書き込み可能であることが必須です。そのため、CHMOD777などの適切なファイル許可があることを確認してください。