Strony błędów są obsługiwane przez .HTACCESS, jeśli używasz Apache, skorzystasz z ErrorDocument
dyrektywy i dodasz do niej status oraz adres URL.
Wygląda to tak w twoim pliku .htaccess:
ErrorDocument 401 http://yourwebsite.com/error-401
ErrorDocument 403 http://yourwebsite.com/error-403
ErrorDocument 500 http://yourwebsite.com/error-500
Możesz użyć poniższej funkcji poniżej. Spowoduje to dynamiczne dodanie potrzebnych plików HTACCESS lub możesz to zrobić ręcznie.
1. Dodaj strony:
Następnie należy przejść do pulpitu nawigacyjnego i utworzyć strony jak każdą normalną stronę („Pulpit nawigacyjny”> „Strony”> „Nowy”). Można je zatytułować, co tylko chcesz, po prostu upewnij się, że ślimak jest taki sam jak w poniższej funkcji (Slug: error-401, error-403, error-404, error-500). Możesz także użyć szablonu strony, aby utworzyć układ i styl dla tych konkretnych stron. W tym celu postępuj zgodnie z instrukcjami Kodeksu WordPress .
2. Dodaj funkcję:
// 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 !! UWAGI NA TEMAT POWYŻSZEJ FUNKCJI
Podczas przenoszenia witryny lub zmiany struktury adresu URL
Należy pamiętać o powyższej funkcji, chociaż sprawdzi ona, czy dyrektywy ErrorDocument już istnieją przed zapisaniem ich w pliku HTACCESS, ale nie zmieni przepisów dyrektyw ErrorDocument, jeśli zmienisz lub przeniesiesz bloga, aby odzwierciedlał zaktualizowane lokalizacje stron. Najpierw musisz usunąć istniejące dyrektywy ErrorDocument w pliku HTACCESS, a następnie ponownie uruchomić tę funkcję, aby utworzyć nowe dyrektywy.
Prawidłowy hak, aby uruchomić funkcję TYLKO RAZ
Inną rzeczą, na którą należy zwrócić uwagę, jest ta funkcja - użycie init
akcji będzie się uruchamiało za każdym razem, gdy strony się ładują, co jest bardzo niepotrzebne i marnotrawcze, dlatego sugerowałbym dodanie jej do wtyczki i użycie register_activation_hook
raczej tak, aby uruchamiała się tylko raz po aktywacji wtyczki
Uprawnienia do plików
Konieczne jest również, aby Twój .htaccess był zapisywalny podczas korzystania z powyższej funkcji, więc upewnij się, że ma on odpowiednie uprawnienia do plików, na przykład CHMOD777.