O Advanced Cron Manager pisałem już 3 lata temu, ale chciałem wyciągnąć ten temat jeszcze raz przy okazji wersji 2, którą ostatnio wydałem. Ta niesie ze sobą kilka bardzo fajnych bajerów, która pomogą Ci debugować zadania Cron w WordPressie.
Geneza
Pierwsza wersja tej wtyczki była pisana przeze mnie kiedy tak naprawdę poznawałem WordPressa. Poskutkowało to 2 wielkimi klasami PHP, które były odpowiedzialne za wszystko. Postanowilem jednak to zmienić, ponieważ nabyłem przez ten czas trochę więcej umiejętności.
Początkowo chciałem tą wtyczkę przepisać na Angularze. Wszystko miało odbywać się bez przeładowania strony, miały być czasy zadań na żywo itd. To było rok temu. Pomysł upadł już przy pierwszych skryptach – wszystko to jest zbyt skomplikowane. Na początku lipca postanowiłem jednak, że zrobię to w jQuery, z solidną bazą PHP.
Darmową wersję 2 ACM razem z wersją PRO pisałem jakieś 2 tygodnie. To była solidna praca, często cały dzień, również w weekendy. Szacuję, że zeszło na to około 50-60h pracy.
Bajery
Wtyczkę starałem się pisać zgodnie z umiejętnościami nabytymi w międzyczasie. Skorzystałem z Dependency Injection Container, kod pisałem modułowo, zacząłem nawet pisać Unit Testy (które niestety porzuciłem, bo tak się podjarałem tym co powstaje).
Także zacząłem od podstaw. Tak kompletnie od podstaw. Nie otworzyłem na początku nawet obecnego kodu, żeby nie zaśmiecać sobie głowy starymi praktykami. Mamy więc całkowicie nową bazę, na której mogę teraz budować. Zmienił się również interfejs na trochę bardziej wygodny:
Wiersze zadań są teraz rozwijane, a w nich są zakładki ze szczegółami zadania.
Interfejs tak jak wspomniałem jest oskryptowany w jQuery. Tutaj przykład dodawania nowego zadania:
We Advanced Cron Manager pojawiły się funkcje, których nie ma żadna inna wtyczka.
Filtrowanie zadań
Dodałem wyszukiwarkę zadań. Wystarczy wpisać wp_, aby lista na żywo się przefiltrowała i pokazała nam zadania dodane przez core WordPress.
Jest również możliwość wyświetlenia zadań z określonym harmonogramem, jeśli interesują Cię tylko zadania wykonujące się np. raz dziennie.
Akcje masowe
W wersji 2 możesz zaznaczyć wszystkie zadania i masowo je usunąć lub wykonać.
Pauzowanie zadań
To jest przydatna funkcja kiedy chcesz zatrzymać wykonywanie jakiegoś zadania, ale chciałbyś zatrzymać je na później. Normalnie oznaczałoby to, że musisz zapisać gdzieś dane zadania (jego nazwę akcji, czas wykonania, harmonogram, argumenty), usunąć go i w razie potrzeby ponownie dodać. Advanced Cron Manager zrobi to za Ciebie.
Implementacja
W zakładkach do każdego zadania znajdziesz przykładową implementację. Tzn. gotową do skopiowania funkcję PHP, do której możesz dopisać interesujący Cię kod.
Wersja PRO
Darmowa wersja, którą możesz ściągnać z repozytorium jest przydatna, ale dopiero funkcje w PRO dają pełną kontrolę nad WP Cronem.
Wersja PRO też przeszła redesign i została wydana w tym samym momencie co wersja darmowa. Dodałem do niej kilka bardzo przydatnych funkcji:
Logowanie każdego wykonanego zadania
Ta funkcja już była, ale to był tylko ogólny log. Teraz dziennik przypisany jest do każdego zadania z osobna, co sprawia, że możesz sprawdzić tylko to co Cię interesuje.
Logowanie błędów i wydajności
W opcjach wtyczki możesz zaznaczyć chęć logowania fatal errorów, warningów i noticów z PHP. Możesz również włączyć logowanie wydajności, co pozwoli Ci przejrzeć czas wykonania akcji oraz ilość zużytej do tego pamięci.
Oto wszystkie opcje wtyczki:
Narzędzie do prostego debugowania
Pomyślałem, że skoro mam taki fajny pojemnik na wszystkie logi to dlaczego by nie dać możliwości zapisywania własnych informacji? To wyszło mi w mojej opinii genialnie, ponieważ wystarczy wykonać tylko jedną akcję w środku swojej funkcji, aby zapisać dowolną informację. Wtyczka sama rozpozna, które aktualnie zadanie jest wykonywane.
Przykład użycia:
add_action( 'custom_hook', function( $arg ) {
add_action( 'advanced-cron-manager/log', function( $logger ) use ( $arg ) {
$logger->log( 'This is the argument incremented with 1: ' . ++$arg );
} );
} );
Wynik możesz zobaczyć na screenshocie powyżej, w sekcji Logowanie każdego wykonanego zadania.
Podsumowanie
Stworzyłem – mam nadzieję – przydatną wtyczkę. W końcu 6000+ aktywnych instalacji darmowej wersji o czymś świadczy. Powoli spływa do mnie feedback do nowej wersji z czego bardzo się cieszę. Wersja PRO odnotowuje pierwsze sprzedaże.
Rozpiskę funkcji oraz cenę Advanced Cron Manager PRO możesz zobaczyć w sklepie.
Chcę podziękować również wszystkim osobom, które zgłosiły mi wszelkie błędy w działaniu. Dzięki temu udało mi się szybko reagować i wypuszczać łatki.
A Ty co myślisz o nowej wersji? Jeśli masz konto na WordPress.org bardzo Cię proszę o ocenę. Dla Ciebie to 30 sekund czasu, a mi bardzo pomoże promować wtyczkę.
Życzę udanego rozwoju wtyczki i jeszcze więcej pobierań/sprzedaży.