Aby uniemożliwić odwiedzającym zobaczenie uszkodzonej wersji mojej witryny podczas konserwacji i dać im znać o aktualizacjach, chciałbym przekierować ich automatycznie na stronę tymczasowej konserwacji. Szukam przenośnego rozwiązania, które może być używane w dowolnej witrynie, bez zakodowanych adresów URL.
Zalogowani administratorzy (lub inny wybrany poziom użytkownika) powinni uzyskać pełny dostęp do zaplecza i interfejsu użytkownika. Istnieje wiele wtyczek, które oferują tę funkcjonalność, ale szukam rozwiązania tylko do kodu.
maintenance
Nowy użytkownik
źródło
źródło
Odpowiedzi:
WordPress ma wbudowaną funkcję obsługi trybu konserwacji.
Po uaktualnieniu wtyczki lub rdzenia WordPress z pulpitu nawigacyjnego WP WordPress przechodzi do trybu konserwacji: próbuje załadować plik o nazwie
maintenance.php
znajdującej się w folderze zawartości (zwykle/wp-content
), a jeśli tego pliku nie ma, WP wyświetla komunikat domyślny.Sugeruję użycie tego pliku, w ten sposób będziesz spójny w przypadku konserwacji uruchamianej ręcznie i obsługi obsługiwanej przez WordPress.
Jak
Najpierw utwórz
maintenance.php
plik i umieść tam żądaną treść. Do stylizacji sugeruję umieszczenie CSS w samym pliku, używając<style>
tagu; generalnie nie jest to dobra rada, ale w tym przypadku daje możliwość użycia pliku w trybie konserwacji obsługiwanym przez WordPress, gdy nie jest załadowany żaden motyw (a motyw może być aktualizowany, więc nie jest wiarygodny).Zapisz właśnie utworzony plik w folderze zawartości (zwykle
/wp-content
).W twoim
functions.php
zestawie:Ten kod sprawdzi stałą (patrz następny punkt) i jeśli użytkownik nie jest zalogowany, załaduj plik utworzony w punkcie # 1 i wyjdź.
Jeśli chcesz zezwolić tylko użytkownikom o określonych możliwościach, użyj
current_user_can('capability_to_allow')
zamiastis_user_logged_in()
. Aby uzyskać więcej informacji, zobacz Kodeks .Może możesz dodać
maintenance.php
link do strony logowania; w ten sposób niezalogowany użytkownik może kliknąć go bez konieczności ręcznego wprowadzania adresu URL logowania w pasku adresu.Jeśli używasz motywu opracowanego przez inną firmę, użyj motywu podrzędnego ; w ten sposób będziesz mógł bezpiecznie aktualizować motyw bez utraty swoich zmian.
Jeśli chcesz włączyć tryb konserwacji, otwórz
wp_config.php
i umieść tam:Następnie, gdy będziesz gotowy ponownie opublikować witrynę, po prostu usuń tę linię lub zmień
true
na,false
aby ułatwić jej ponowne włączenie.źródło
define('WP_CONTENT_DIR','/url/to/define/');
wwp-config.php
pliku.Poprzednia odpowiedź jest kompletna i dobrze napisana. W każdym razie, jeśli jesteś podobny do mnie i chcesz mieć wszystko w jednym miejscu, możesz upuścić następujące wiersze w
function.php
pliku i utworzyćmaintenance.php
plik w katalogu motywów.Jest to szczególnie przydatne, jeśli Twoje repozytorium Git wskazuje tylko katalog motywów.
UWAGI
Zmieniłem nagłówek,
header('HTTP/1.1 503 Service Temporarily Unavailable');
ponieważ powyższy nie działał dla mnie.źródło