• Home
  • Wordpress
  • Jak przeglądać i tworzyć zadania Cron w WordPressie

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

Cron to technologia, która 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 technologii Cron możliwe jest automatyczne uruchamianie zadań na serwerze 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 w oparciu o własny kod PHP, co daje prawie nieograniczone możliwości.

1. Sprawdzanie istniejących zadań Cron w WordPressie

Zacznijmy od sprawdzania tego, co WordPress ma już zaplanowane w Cronie. Za pomocą poniższego sposobu możecie przejrzeć i edytować zarówno oryginalne zadania WordPressa, jak również te, które zostały dodane np. w wyniku zainstalowania jakiejś wtyczki. Aby to zrobić, konieczne jest zainstalowanie wtyczki WP Crontrol.

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

Wtyczka WP Crontrol 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 > Cron events”. Wyświetli się tu lista wszystkich zadań, które WordPress ma zaplanowane. W kolumnie „Action name” 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_”.

W kolumnie „Recurrence” możesz zobaczyć częstotliwość, z jaką zadania są powtarzane (np. co 12 godzin, co 1 dzień, co miesiąc itp.). 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.

Jeśli jednak w opcjach wtyczki nie znajdziesz żadnych ustawień, które mogłyby mieć związek z zaplanowanymi zadaniami, to możesz zadania zmodyfikować lub usunąć z poziomu WP Crontrol. Wystarczy, że obok danego zadania wciśniesz przycisk „Edit”, co spowoduje wysunięcie ekranu edycji danego zadania. Możesz wtedy zmienić częstotliwość wykonywania danego zadania, tak, aby nie wykonywało się codziennie tylko np. co tydzień. Opcjonalnie, jeśli chcesz, to możesz zadanie całkowicie usunąć przyciskiem „Delete” – nie zalecamy jednak usuwania zadań, których działania nie rozumiemy. Jeśli już musisz edytować zadanie, to lepiej zmień jego częstotliwość powtarzania, gdyż tę opcję zawszę możesz zmienić z powrotem na oryginalną, a przywrócenie usuniętego zadania może być trudne.

2. Tworzenie własnych zadań Cron w WordPressie

WP Crontrol pozwala także tworzyć własne, spersonalizowane zadania Cron, jednak trzeba zaznaczyć, iż wymaga to znajomości programowania. Utworzenie samego zadania jest banalnie łatwe, jednak sprawienie, żeby to zadanie coś robiło wymaga samodzielnego napisania kodu PHP – nie ma niestety możliwości „wyklikania” sobie zadania na bazie gotowych schematów.

Przejdź do „Narzędzia > Cron events” i przewiń stronę na sam dół. Znajdziesz tu zakładki z dodawaniem zadań Cron – wybierz „Add Cron Event”.

Najpierw stworzymy czyste zadanie, nadając mu odpowiednią nazwę i ustawiając częstotliwość uruchamiania, a następnie odwołamy się do tego zadania w kodzie PHP, nadając mu konkretną funkcjonalność.

Musimy w tym celu podać nazwę („Action name”) oraz możemy opcjonalnie zdefiniować argumenty. Pole „Action Name” jest o tyle ważne, że musimy tu wpisać nazwę, do której będziemy odwoływać się w kodzie PHP, aby zdefiniować jej działanie. Polecamy wpisać nazwę bez spacji, małymi literami, bez polskich znaków, ewentualnie oddzielając słowa znakiem „_”. Przykładowo, jeśli chcemy stworzyć zadanie, które wysyła wiadomość e-mail, to możemy je nazwać „wp_wyslij_wiadomosc”.

W polu „Next Run” musisz ustawić czas pierwszego uruchomienia zadania, natomiast w polu „Recurring” ustawiasz częstotliwość, z jaką zadanie ma się powtarzać. Zapisz zadanie przyciskiem „Add Cron Event”.

Zadanie „wp_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 funkcjonalności. Tu, niestety, kłania się znajomość programowania w PHP. Musimy stworzyć kod PHP, w którym odwołamy się do naszego zadania. Jako przykład można podać poniższy kod:

if ( ! wp_next_scheduled( 'wp_wyslij_wiadomosc' ) ) {

  wp_schedule_event( time(), 'hourly', 'my_task_hook' );

}

add_action( 'wp_wyslij_wiadomosc' , 'wp_wyslij_wiadomosc_func' );

function wp_wyslij_wiadomosc_func() {

  wp_mail( 'adres@email.pl', 'Temat zaplanowanej wiadomości', 'Treść wiadomości wysłanej przez zadanie w Cron');

}

Powyższe zadanie sprawdza za pomocą „if”, czy istnieje zaplanowane zadanie „wp_wyslij_wiadomosc” z częstotliwością co godzinę („hourly”). Jeśli je znajdzie, to dodaje do niego funkcję „wp_wyslij_wiadomosc_func”, która używa mechanizmu „wp_mail” do wysłania wiadomości na podany adres z podaną treścią. Kod należy wkleić np. do pliku functions.php aktywnego motywu. Po wprowadzeniu kodu możesz sprawdzić, czy zadanie działa, wciskając przycisk „Run now” obok swojego zadania na liście Cron.

W naszym wypadku widzimy, że wszystko poszło dobrze – WordPress od razu wysyła wiadomość e-mail na podany w skrypcie PHP adres w momencie wykonania 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.

Tags:, ,

1
Dodaj komentarz

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Kuba Mikita Recent comment authors
  Subscribe  
najnowszy najstarszy oceniany
Powiadom o
Kuba Mikita
Gość
Kuba Mikita

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

Facebook - LH.pl

Page plugin Facebook nie działa poprawnie. Proszę włączyć śledzenie w ustawieniach przeglądarki.