Jak przeglądać i tworzyć zadania Cron w WordPressie

Cron pozwala uruchamiać zaplanowane zadania na serwerze. W WordPressie oznacza to, że CMS może automatycznie sprawdzać aktualizacje, czy też wykonywać kopie zapasowe strony w ramach działania wtyczki. Możesz sprawdzić, jakie zadania są zaplanowane, a także tworzyć własne.

Dzięki Cron możliwe jest automatyczne uruchamianie zadań bez udziału użytkownika. Zaplanowane raz zadania mogą być wykonywane jednorazowo (np. publikacja posta) lub wielokrotnie (np. sprawdzanie aktualizacji, opróżnianie kosza z usuniętych komentarzy itp.). WordPress oczywiście posiada też swoją własną listę zaawansowanych zadań, które są co jakiś czas wykonywane w celu prawidłowej pracy skryptu. Co więcej, jeśli korzystasz z wtyczki np. do wykonywania kopii zapasowych strony i posiada ona funkcję planowania automatycznych kopii w określone dni i godziny, to również w tym celu wykorzystywany jest Cron.

Trzeba jednak pamiętać, że Cron może znacznie spowolnić działanie naszego serwera, zwłaszcza gdy korzystamy z najprostszego hostingu współdzielonego. Jeśli nagromadzona zostanie duża ilość zadań, które np. codziennie wykonują dużą ilość zaplanowanych czynności, to wpłynie to negatywnie na szybkość działania całej strony. Istnieje jednak sposób na to, aby przeglądać listę zaplanowanych zadań, edytować ich działanie (np. zmienić częstotliwość sprawdzania aktualizacji) lub całkowicie je usuwać. Można też tworzyć własne zadania Cron, które będą wykonywać Twój własny kod PHP.

1. Sprawdzanie istniejących zadań Cron w WordPressie

Zacznijmy od sprawdzania tego, co WordPress ma już zaplanowane. Za pomocą poniższego sposobu możesz przejrzeć i edytować zarówno oryginalne zadania WordPressa, jak również te, które zostały dodane np. w wyniku zainstalowania wtyczki. Wystarczy w tym celu skorzystać z wtyczki Advanced Cron Manager.

W tym celu przejdź w WordPressie do zakładki „Wtyczki” i wybierz „Dodaj nową”. Wyszukaj wtyczki o nazwie Advanced Cron Manager i wybierz opcję „Zainstaluj”, a następnie „Włącz”.

Zainstaluj Advanced Cron Manager

Wtyczka Advanced Cron Manager zostanie dodana i możesz teraz za jej pomocą przeglądać zadania, a także tworzyć nowe. Z menu bocznego wybierz zakładkę „Narzędzia > Manager Cron”. Wyświetli się tu lista wszystkich zadań, które WordPress ma zaplanowane. W kolumnie „Zadanie” znajdziesz nazwę zadania. Te, które zaczynają się prefiksem „wp_” dotyczą podstawowych funkcji WordPressa. Jeśli masz zainstalowane wtyczki, które dodają własne zadania Cron, to będą one odpowiednio oznaczone. Przykładowo, zadania od WooCommerce są oznaczone prefiksem „woocommerce_”, natomiast zadania od wtyczki Everest Forms są widoczne z przedrostkiem „everest_forms_”.

W kolumnie „Harmonogram” możesz zobaczyć częstotliwość, z jaką zadania są powtarzane (np. co 12 godzin, co 1 dzień, co miesiąc itp.). Widzisz też, kiedy zadania zostaną wykonane ponownie.

Informacje tu zawarte można wykorzystać w różny sposób. Jeśli widzisz dużą ilość zadań, które często się powtarzają, to po nazwie jesteś w stanie wywnioskować, jaka wtyczka to powoduje. Możesz wtedy wejść do ustawień danej wtyczki i tam dostosować np. jak często mają być wykonywane kopie zapasowe strony czy też inna zaplanowana funkcja. Alternatywnie, możesz też taką wtyczkę całkowicie usunąć, jeśli uznasz, że nie chcesz oprogramowania, które nadmiernie generuje powtarzalne zadania.

Jeśli jednak w opcjach wtyczki nie znajdziesz żadnych ustawień, które mogłyby mieć związek z zaplanowanymi zadaniami, to możesz niepotrzebne zadania wstrzymać lub całkowicie usunąć za pomocą przycisków „Pauzuj” lub „Usuń”. Pamiętaj jednak, że wykonujesz to na własną odpowiedzialność – niektóre zadania Cron mogą być niezbędne do prawidłowego działania określonej wtyczki.

2. Tworzenie własnych zadań Cron w WordPressie

Advanced Cron Manager pozwala także tworzyć własne, spersonalizowane zadania Cron, jednak trzeba zaznaczyć, iż o ile utworzenie samego zadania jest banalnie łatwe, o tyle sprawienie, żeby to zadanie coś robiło, wymaga samodzielnego napisania kodu PHP z konkretnymi instrukcjami. Nie ma możliwości „wyklikania” sobie czynności, jaką zadanie ma wykonać na bazie gotowych schematów.

Przejdź do „Narzędzia > Manager Cron” i na samej górze strony wybierz opcję „Dodaj nowe zadanie”. Z prawej strony ekranu wysunięty zostanie panel, w którym możesz dostosować szczegóły tworzonego zadania Cron.

W polu „Nazwa akcji” wpisz nazwę swojego zadania. Jest ono o tyle ważne, że musimy tu wpisać nazwę, do której będziemy odwoływać się w przyszłości w kodzie PHP podczas definiowania tego, co ta akcja ma robić. Polecam wpisać nazwę bez spacji, małymi literami, bez polskich znaków, ewentualnie oddzielając słowa znakiem „_” – tak, jak robi to WordPress. Przykładowo, jeśli chcemy stworzyć zadanie, które wysyła wiadomość e-mail, to możemy je nazwać „wyslij_wiadomosc”.

W polu „Pierwsze wykonanie” ustaw datę i godzinę pierwszego uruchomienia zadania (np. 19.02.2020 20:00). Następnie dostosuj „Harmonogram”. Ustawiasz tu częstotliwość, z jaką zadanie ma się powtarzać (np. codziennie, raz na 3 dni, raz na tydzień etc.). Zapisz zadanie przyciskiem „Dodaj zadanie”.

Zadanie „wyslij_wiadomosc” zostało utworzone i uruchamia się w określonych odstępach czasu, ale póki co nic nie robi, gdyż nigdzie jeszcze nie nadaliśmy mu żadnej konkretnej funkcjonalności. Tu, niestety, kłania się znajomość programowania w PHP. Musimy dopisać do zadania kod PHP, który zrobi to, co chcemy.

Wejdź w szczegóły swojego zadania na liście, a następnie rozwiń zakładkę „Implementacja”. W tym miejscu wyświetli się szablon kodu PHP, którym możemy odwołać się do swojego zadania, np:

function cron_wyslij_wiadomosc_fe94ab6a() {
// do stuff
}

add_action( 'wyslij_wiadomosc', 'cron_wyslij_wiadomosc_fe94ab6a', 10, 0 );

Szablon sam w sobie nie wykonuje żadnej czynności – tę musimy mu nadać już sami. Kod ten należy skopiować do pliku functions.php swojego motywu lub wtyczki, a następnie uzupełnić o odpowiednią funkcjonalność.

Swój własny kod należy wstawić pod wierszem oznaczonym jako „// do stuff”. Oto przykład kodu wstawionego w to zadanie, który wysyła wiadomość o podanej treści i temacie, na podany adres e-mail:

function cron_wyslij_wiadomosc_fe94ab6a() {
// do stuff
wp_mail( 'adres@email.pl', 'Temat zaplanowanej wiadomości', 'Treść wiadomości wysłanej przez zadanie w Cron');
}

add_action( 'wyslij_wiadomosc', 'cron_wyslij_wiadomosc_fe94ab6a', 10, 0 );

Kod należy wkleić np. do pliku functions.php aktywnego motywu. Po wprowadzeniu kodu możesz sprawdzić, czy zadanie działa, wciskając przycisk „Wykonaj teraz” obok swojego zadania na liście Cron.

Jeśli wszystko skonfigurowane zostało poprawnie, to na wpisany w kodzie PHP adres e-mail otrzymasz wiadomość po wykonaniu zadania. Oczywiście powyższy przykład nie jest do niczego konkretnego przydatny, ale pozwala nam sprawdzić, czy zadanie jest poprawnie ustawione. Za każdym razem, gdy zadanie zostanie wykonane, WordPress wyśle wiadomość e-mail na podany adres pocztowy. Stworzenie własnego zadania o konkretniejszym działaniu wymaga bardziej zaawansowanej umiejętności programowania w PHP.

Artykuł odpowiedział na twoje pytanie? Udostępnij go dalej:
Obrazek domyślny
Błażej Starosta
Ma doświadczenie w tworzeniu oraz prowadzeniu stron WWW, od blogów aż po sklepy internetowe. Od lat uważnie śledzi rozwój WordPressa i jego wpływ na rynek twórców stron internetowych. Stara się być na bieżąco ze wszystkimi nowinkami technologicznymi i dzielić się swoją wiedzą.

Jeden komentarz

  1. Jest lepsze, polskie narzędzie do Crona mojego autorstwa: https://wordpress.org/plugins/advanced-cron-manager/ 🙂

Możliwość komentowania została wyłączona.