# Historia cen — dokumentacja ## Cron dzienny: zapisywanie historii cen ### Co robi Raz na dobę WP Cron uruchamia zadanie `apartamenty_record_prices`, które: 1. Pobiera wszystkie opublikowane posty typu `apartamenty` 2. Odczytuje aktualne ceny z pól ACF: - `information_price` — cena brutto (np. `"677 920"`) - `information_price_m2` — cena za m² (np. `"19 000"`) - `information_floor_space` — metraż (np. `"35,68"`) 3. Zapisuje jeden rekord dziennie do tabeli `wp_price_history` 4. Używa `INSERT IGNORE` — jeśli rekord dla danego apartamentu i daty już istnieje, pomija (bez duplikatów) ### Tabela bazy danych **Nazwa:** `wp_price_history` | Kolumna | Typ | Opis | |---------|-----|------| | `id` | BIGINT UNSIGNED AUTO_INCREMENT | Klucz główny | | `post_id` | BIGINT UNSIGNED | ID posta apartamentu | | `price` | VARCHAR(50) | Cena brutto jako string, np. `"677 920"` | | `price_m2` | VARCHAR(50) | Cena za m² jako string, np. `"19 000"` | | `floor_space` | VARCHAR(50) | Metraż jako string, np. `"35,68"` | | `recorded_at` | DATE | Data zapisu, np. `"2026-03-12"` | Unikalny klucz: `(post_id, recorded_at)` — jeden wpis na apartament na dzień. ### Harmonogram - **Częstotliwość:** raz dziennie (`daily`) - **Hook WP Cron:** `apartamenty_record_prices` - **Rejestracja:** przy każdym żądaniu strony (`wp` action), jeśli zadanie nie jest jeszcze zaplanowane ### Kod źródłowy Plik: `wp-content/plugins/elementor-addon/elementor-addon.php` - `elementor_addon_schedule_cron()` — rejestruje zadanie w WP Cron - `elementor_addon_record_prices()` — wykonuje zapis cen ### Ważne: WP Cron wymaga ruchu na stronie WP Cron nie jest prawdziwym cronem systemowym — uruchamia się przy odwiedzeniu strony przez użytkownika. Jeśli strona ma mały ruch, zadanie może się nie wykonać o dokładnej porze. **Rozwiązanie: prawdziwy cron systemowy (zalecane na produkcji)** Wyłącz WP Cron w `wp-config.php`: ```php define( 'DISABLE_WP_CRON', true ); ``` Dodaj zadanie w cPanel → Cron Jobs (lub przez SSH): ``` 0 6 * * * wget -q -O /dev/null "https://wyszynskiego12.pagedev.pl/wp-cron.php?doing_wp_cron" >/dev/null 2>&1 ``` lub z curl: ``` 0 6 * * * curl -s "https://wyszynskiego12.pagedev.pl/wp-cron.php?doing_wp_cron" > /dev/null 2>&1 ``` Powyższe uruchamia cron codziennie o 6:00. ### Ręczne uruchomienie (debugowanie) Aby wymusić zapis raz ręcznie bez czekania na cron, wklej w przeglądarce (zalogowany jako admin): ``` https://wyszynskiego12.pagedev.pl/wp-cron.php?doing_wp_cron ``` Lub przez WP-CLI (SSH): ```bash wp cron event run apartamenty_record_prices ``` ### Sprawdzenie następnego uruchomienia (WP-CLI) ```bash wp cron event list ``` ### Weryfikacja zapisanych danych (SQL) ```sql SELECT * FROM wp_price_history ORDER BY recorded_at DESC LIMIT 20; ``` Liczba rekordów per apartament: ```sql SELECT post_id, COUNT(*) as wpisy, MIN(recorded_at) as od, MAX(recorded_at) as do FROM wp_price_history GROUP BY post_id; ```