A kisebb forgalmú WordPress-oldalak egyik gyakori problémája, hogy az ütemezett WordPress-bejegyzések nem jelennek meg a megfelelő időpontban. Ennek oka elsődlegesen az, hogy a WordPress egy saját cront (feladatidőzítőt) tart fenn az ütemezett feladatok végrehajtásához, és hacsak nem gondoskodunk ennek rendszeres időközönként történő futtatásáról, könnyen előfordulhat, hogy pl. egy 10:00 időpontra beütemezett feladat azért nem tud kikerülni az internetre, mert ekkor éppen senki sem kereste fel az oldalunkat, így ezt a feladatot sem tudta az adott időpontban triggerelni a WordPress. Ilyenkor sikertelen időzítés állapotba kerül a bejegyzés, ami azért is bosszantó, mert azon túl, hogy semmi sem történik majd vele automatikusan, és erről még csak értesítést sem kapunk, nekünk kézzel kell újra közzétennünk a bejegyzést a szerkesztőből.

Szerencsére, mint mindenre, erre is létezik megoldás, méghozzá nem is egy. Lássuk a részleteket!

Feladatok ütemezése bővítménnyel

Ahogy az a WordPress esetén szinte mindenre igaz, itt is érvényes, hogy erre a problémára is létezik egy bővítmény! Nem is egy, hanem rögtön kettő. Az egyik a Scheduled Post Trigger névre hallgat, és a telepítésén és aktiválásán kívül semmi más teendőnk nincs. Állítólag sokaknak működik, mi kipróbáltuk az egyik oldalunkon, és egy, a bővítmény telepítése előtt ütemezett WordPress-bejegyzés esetén semmi változást nem tapasztaltunk. Azaz továbbra is sikertelen időzítéses állapotban maradt. Ez lenne a legegyszerűbb módja a probléma megoldásának, de úgy tűnik, nem 100%-ban működőképes. Mindenesetre érdemes vele tenni egy próbát, és ha beválik, akkor le is zárhatjuk a problémamegoldást. Ha nem, akkor érdemes telepíteni a következő bővítményt.

Ha esetleg mégsem működne, akkor viszont van egy tuti tippünk, amelynek csak egy picit körülményesebb a telepítése. Ez a WP Missed Schedule névre hallgat, és a készítőjének kérésére nem érhető el a WP kereshető bővítménykatalógusában. A GitHub-oldalról viszont könnyedén le tudjuk tölteni ZIP formátumban (lásd az alábbi képen), és ezt már a Bővítmények oldalán csak fel kell töltenünk a saját oldalunkra. Az aktiválását követően ezzel sincs semmi dolgunk, és ez a bővítmény nálunk minden oldal esetében probléma nélkül működött, még akkor is, ha a telepítését megelőzően időzített bejegyzésről volt szó.

Egyedül arra kell figyelni, ha esetleg alapvetően megváltozik a WordPress működése (például 5.x-esről 6-os verzióra kell frissíteni), mert akkor könnyedén működésképtelenné válhat ez a bővítmény, és mivel nem szerepel a bővítménytárban, így a frissítéséről is nekünk kell majd gondoskodnunk. Mivel a WP egy alapvető, központi funkciójáról van szó, ezért nem valószínű, hogy ez a közeljövőben problémát okozna, de nem árt észben tartani, ha egyszer csak megint meghiúsul egy időzített bejegyzés közzététele.

A cron futtatása rendszeres időközönként

Természetesen létezik másik megoldás is arra, hogy az alacsonyabb látogatói forgalmat kompenzáljuk. Mi magunk is gondoskodhatunk arról, hogy minden percben legyen forgalom az oldalunkon. Amennyiben a webhelyszolgáltatást béreljük egy szolgáltatótól, úgy az ő felületünkön kell utánanéznünk, hogy az alábbiakban leírtakra lehetőségünk nyílik-e. Ha a saját szerverünket használjuk, akkor pedig lehetőségünk nyílik a rendszer-crontab használatával gondoskodni a megfelelő oldal rendszeres lekéréséről.

A WordPress beépített cronjának letiltása

Első lépésként le kell tiltanunk a WordPress saját, beépített cronját, mivel innentől kezdve nem a külső (látogatói) oldallekérések alapján fogjuk futtatni a tervezett feladatokat. Ehhez szerkeszteni kell a WP gyökérkönyvtárában található wp-config.php fájlt, és el kell helyezni benne az alábbi sort:

 define('DISABLE_WP_CRON', true);

ISPConfig használata esetén

Amennyiben a tökéletes Ubuntu szerverünket használjuk, és telepítettük rá az ISPConfig nevű webes irányítópultot, akkor a Sites -> Cron Jobs alatt tudunk új cron-feladatot létrehozni. Itt adhatjuk meg, hogy melyik webhelyről van szó, valamint a feladat időzítését. Ha minden percben szeretnénk futtatni a fealadatokat (bejegyzések közzétételéhez erre lesz szükségünk, más karbantartási feladatok végrehajtása esetén elegendő lehet 5 percenként is futtatni a cront), akkor az összes időzítős időegységhez csak egy csillagot kell írnunk.

 

A Command to run mezőben pedig azt az URL-címet kell megadnunk, amellyel a WP cronját tudjuk meghívni: https://sajatdomain.hu/wp-cron.php?doing_wp_cron

És már készen is vagyunk!

Rendszerszintű cron-faladat használata esetén

Ha nincs webes vezérlőpultunk, de van SSH-hozzáfésérünk az Ubuntu- vagy Debian-rendszerünkhöz, akkor a crontab -e parancs kiadásával tudjuk szerkeszteni a rendszer aktuálisan bejelentkezett felhasználójának crontabját. Ide kell felvennünk új sorként a következő kifejezést:

* * * * * wget http://sajatdomain.hu/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Vagy csak karbantartási feladatok esetén, ha elegendő az 5 perces időköz:

*/5 * * * * wget http://sajatdomain.hu/wp-cron.php?doing_wp_cron > /dev/null 2>&1

A mentést követően máris élesedik a feladat, és a rendszer minden percben (vagy ötödik percben) lefuttatja a parancsot.

Ha esetleg a wget nem lenne telepítve a rendszerre, akkor a sudo apt-get install wget paranccsal tudjuk telepíteni.

Chilly
Chilly

Chilly 1997 óta foglalkozik webhelyek üzemeltetésével és programozással, valamint különböző kütyük kipróbálásával, és azóta folyamatosan nyomon követi a technikai újításokat. Elsődlegesen Linux-rendszerekkel dolgozik, de az évek során rengeteg tapasztalatra tett szert a Windows-gépek üzemeltetése terén is, hobbiszinten pedig az utóbbi időben egyre több időt tölt a Raspberry Pi módosítgatásával, illetve otthoni automatizált és biztonságtechnikai rendszerek kiépítésével.
Mesterfokon beszél angolul, és műszaki szakfordítói vizsgával rendelkezik. Korábban sokáig újságíróként dolgozott nyomtatott és online magazinoknál.