=== Maintenance Mode ===
Contributors: ACWP (Mateusz Turek)
Tags: maintenance, tryb konserwacji, 503, seo, dostęp, whitelist ip
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.3.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Lekka wtyczka WordPress umożliwiająca włączenie trybu konserwacji
dla użytkowników bez dostępu (HTTP 503 – SEO friendly), z opcją
auto-wyłączenia po dacie, whitelistą IP oraz kontrolą dostępu per role.

== Opis ==

Wtyczka pozwala w prosty sposób włączyć tryb konserwacji WordPressa
bez ingerencji w motyw lub pliki `.htaccess`.

Po aktywacji i włączeniu trybu, użytkownicy bez dostępu zobaczą
komunikat o pracach technicznych, natomiast:

- zalogowani użytkownicy z wybranymi rolami (np. administrator, edytor),
- oraz użytkownicy z adresów IP dodanych do whitelisty

widzą stronę normalnie.

Wtyczka zwraca poprawny kod HTTP 503 (Service Unavailable),
co informuje wyszukiwarki, że przerwa ma charakter tymczasowy
i nie wpływa negatywnie na indeksowanie strony.
Opcjonalnie wysyłany jest również nagłówek `Retry-After`.

== Informacje o bezpieczeństwie ==

Wtyczka została zaprojektowana z uwzględnieniem dobrych praktyk
bezpieczeństwa WordPressa:

- kontroluje dostęp na podstawie ról użytkownika,
- obsługuje whitelistę IP (pojedyncze IP, CIDR, zakres IPv4),
- sanitizuje i filtruje treść komunikatu (`wp_kses_post`),
- renderuje własną stronę HTML (bez użycia `wp_die`), co zapobiega konfliktom layoutu,
- nie wykonuje zapytań AJAX ani operacji zapisu do bazy danych poza opcjami,
- nie ładuje zewnętrznych bibliotek ani dodatkowych skryptów JS,
- nie ingeruje w treść strony dla użytkowników posiadających dostęp.

== Instalacja ==

1. Prześlij folder wtyczki do katalogu `/wp-content/plugins/`
   lub zainstaluj ją przez panel WordPressa.
2. Aktywuj wtyczkę w sekcji „Wtyczki” w panelu administracyjnym.

== Ustawienia ==

Ustawienia wtyczki dostępne są w:

Ustawienia → Ogólne → Maintenance Mode

Dostępne opcje:
- włączenie / wyłączenie trybu konserwacji,
- treść komunikatu (edytor WYSIWYG),
- tytuł strony (element `<title>`),
- obraz tła (biblioteka mediów),
- auto-wyłączenie trybu po dacie i godzinie (czas WordPressa),
- whitelist IP (adresy zawsze widzą stronę normalnie),
- dostęp w czasie konserwacji dla wybranych ról użytkowników
  (domyślnie: administrator oraz edytor).

Zmiany zapisywane są natychmiast po zapisaniu ustawień.

== Najczęściej zadawane pytania ==

= Kto widzi stronę w trybie konserwacji? =

Tryb konserwacji widzą wyłącznie użytkownicy bez dostępu.
Stronę normalnie widzą:
- użytkownicy z dozwolonymi rolami,
- użytkownicy z adresów IP dodanych do whitelisty.

= Jaki kod HTTP zwraca wtyczka? =

Wtyczka zwraca kod HTTP 503 (Service Unavailable)
oraz nagłówek `Retry-After`, co jest zalecane z punktu widzenia SEO.

= Jak działa auto-wyłączenie po dacie? =

Możesz ustawić datę i godzinę, po której wtyczka automatycznie
wyłączy tryb konserwacji. Czas liczony jest zgodnie z ustawieniami
strefy czasowej WordPressa.

= Jak działa whitelist IP? =

Adresy IP na whiteliście zawsze widzą stronę normalnie,
nawet bez logowania.

Obsługiwane formaty:
- pojedynczy adres IP (np. 83.12.34.56),
- CIDR (np. 83.12.34.0/24),
- zakres IPv4 (np. 83.12.34.10-83.12.34.20).

= Czy wtyczka wpływa na pozycjonowanie strony? =

Nie negatywnie.
Kod HTTP 503 informuje wyszukiwarki, że przerwa ma charakter tymczasowy,
dzięki czemu strona nie jest deindeksowana.

= Jak wyłączyć tryb konserwacji? =

Wystarczy odznaczyć opcję „Włącz tryb konserwacji”
w Ustawienia → Ogólne → Maintenance Mode
lub dezaktywować wtyczkę.

== Zrzuty ekranu ==

1. Opcje wtyczki w Ustawienia → Ogólne.
2. Widok komunikatu trybu konserwacji dla użytkowników bez dostępu.

== Changelog ==

= 1.3.0 =
* Dodano: auto-wyłączenie trybu konserwacji po dacie i godzinie (czas WordPressa).
* Dodano: whitelist IP (IP, CIDR, zakres IPv4) – dostęp do strony bez logowania.
* Dodano: kontrolę dostępu w czasie konserwacji na podstawie ról użytkownika
  (domyślnie: administrator, edytor).
* Refactor: podział kodu na pliki w katalogu `/includes`
  (access.php, render.php, settings.php, admin.php).
* Ulepszenie: spójna i jawna sanitizacja wszystkich ustawień
  (`register_setting` z callbackami).
* SEO: zwracanie HTTP 503 oraz nagłówka `Retry-After`.
* Stabilność: własny render strony maintenance (bez `wp_die`).

= 1.2.1 =
* Bezpieczeństwo: poprawna rejestracja ustawień (`register_setting`).
* Bezpieczeństwo: filtracja treści komunikatu (`wp_kses_post`).
* SEO: nagłówek `Retry-After` przy odpowiedzi 503.
* Aktualizacja: przetestowano z WordPress 6.9.
* Uporządkowanie: spójność nagłówka wtyczki i pliku readme.

= 1.1.0 =
* Dodano: edytowalną treść komunikatu (wp_editor).
* Ulepszenie: poprawne zwracanie kodu HTTP 503.
* Ulepszenie: brak renderowania trybu konserwacji dla administratorów.

= 1.0.0 =
* Pierwsze wydanie wtyczki.