Jeśli musisz się pomęczyć z WordPressowym Cronem to może przyda Ci się moja nowa (druga) wtyczka – Advanced Cron Manager. Mam nadzieję, że ten projekt nie umrze tak jak Gugl ;)

Czym jest Cron i po co w ogóle go stosować?

Zadanie Crona jest proste – wywołać określoną funkcję o określonym czasie. To wszystko. A po co Cron w WordPressie? Do rozmaitych rzeczy. Jak zainstalujesz moją wtyczkę to zobaczysz na pewno 6 zadań służących między innymi do sprawdzenia czy są nowe wersje wtyczek albo usunięcia starych rewizji wpisów. To są domyślne zadania WordPressa.

Ale mi się nie wykonuje :(

Czy Tobie też zdarzyło się wejść na swojego bloga, zobaczyć 0 aktualizacji, po czym po kilku odświeżeniach napotkać na jakieś? To właśnie zadziałał WP Cron i właśnie poznałeś jego minus. Jeśli zadanie będzie ustawione na godzinę 15:00, a w godzinach 14:00 – 17:00 nie będziesz mieć żadnych odwiedzin to przykro mi. Jeśli od tego zależało wysłanie raportu z WordPressa do szefa to właśnie straciłeś pracę. Dlaczego? Bo Cron w WP odpalany jest tylko i wyłącznie przy odwiedzinach. Więc jeśli następne wywołanie strony będzie o godzinie 17:00 to zadanie mimo, że ustawione na 15:00 wykona się o 17:00.

Działa to tak, że w WP jest tablica zadań. WordPress przy każdym uruchomieniu strony sprawdza czy któreś zadanie się nie „przeterminowało” i jeśli tak to wywołuje akcje z podanym hakiem.

Czemu więc nie użyć serwerowego Crona tylko tego w WP?

Bo jesteś masochistą i lubisz cierpieć. Ale na pocieszenie mam dla Ciebie informację, że można odpiąć WordPressowego Crona i podpiąć go pod Crona na serwerze. Jak to zrobić niżej.

A co z Advanced Cron Manager?

Wtyczką możesz dodawać/usuwać zadania Crona oraz dodawać/usuwać harmonogramy. (Prawie) wszystko śmiga na AJAXie, bo ostatnio fajnie mi się pisze AJAXowe pytania, więc bez włączonego Javascriptu ani rusz.

W panelu administracyjnym wygląda to tak:

Advanced Cron Manager

Zachęcam do pobierania, testowania i hejtowania :)

Zmiana WP Cron na Cron

Przepis jest prosty. Wejdź w panel administracyjny Twojego serwera i szukaj czegoś podobnego do Add New Cron Job (cPanel). Jeśli Twój adres strony to adres-strony.pl to zadanie Crona wygląda tak:

wget -q -O - http://adres-strony.pl/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Czas najlepiej ustawić na 15-30 minut.

Pozostało jeszcze tylko odpiąć Crona z WP dopisując w wp-config.php:

define('DISABLE_WP_CRON', true);

I to wszystko. Cron w WP chodzi teraz niezależnie od odwiedzin.

Opublikowany przez Kuba Mikita

Miłośnik minimalizmu i prostoty, bo nie potrafi stworzyć niczego ładnego. Ma kołdrę, na której wypisane są funkcje WordPressa.

4 odpowiedzi na “Advanced Cron Manager czyli Cron w WP”

  1. Co jak co, ale większość osób w moim przekonaniu rzadko stosuje Crona :)
    Zrób może jakąś inną wtyczkę, o bardziej pospolitych funkcjach :) Ja na ten przykład bardzo mocno ubolewam nad brakiem pluginu do encyklopedii :)
    P.S. Znasz może MQL?

    1. Do encyklopedii? Rozwiń proszę :)
      MQL niestety nie jest mi znane.

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