# WP Crontrol

> A WP Crontrol ingyenes bővítmény a WordPress időzített feladatainak (WP-Cron) megtekintésére, kézi futtatására, szerkesztésére és az ütemezések kezelésére.

A [WP Crontrol](https://wp-crontrol.com/) ingyenes bővítmény, amellyel a WordPress időzített feladatait (WP-Cron eseményeit) az admin felületen látod és kezeled. Megmutatja az események paramétereit, ütemezését, a lefutó függvényt és a következő esedékes időpontot. Eseményt szerkeszthetsz, törölhetsz, szüneteltethetsz, azonnal futtathatsz, és új eseményt, új ütemezést is felvehetsz. Hibakeresésnél akkor jön jól, ha egy bővítmény időzített feladata nem fut le, vagy túl sokszor fut.

A bővítményhez WordPress 6.6 és PHP 7.4 kell. Az események kezeléséhez a `manage_options` jogosultság szükséges, ez alapból az adminisztrátoroké.

## Telepítés

1. Menj a **Bővítmények → Új hozzáadása** oldalra.
2. Keress rá: **WP Crontrol**.
3. Kattints a **Telepítés most**, majd az **Aktiválás** gombra.

WP-CLI-vel:

```bash title="Terminál"
wp plugin install wp-crontrol --activate
```

[Bedrock](https://hub.hellowp.io/hu/knowledge-base/developer-tools/bedrock/) projektben Composerrel add hozzá, és utána aktiváld:

```bash title="Terminál"
composer require wp-plugin/wp-crontrol
wp plugin activate wp-crontrol
```

## Hol találod

A bővítmény saját **Cron** menüt kap az admin oldalsávban. Ezen belül ezek az oldalak vannak: **Cron Events**, **Cron Logs**, **Cron Insights**, **Cron Alerts**, **Cron AI** és **Cron Schedules**. A korábbi **Eszközök → Cron Events** útvonal is működik. Ha nem kell a külön főmenü, a `crontrol/top_level_menu` szűrővel elrejtheted:

```php title="functions.php"
add_filter( 'crontrol/top_level_menu', '__return_false' );
```

## Események listája

A **Cron Events** oldal minden ütemezett eseményt felsorol: a hookot, a paramétereket, az ütemezést (ismétlődés), a következő futás idejét és a hozzá kapcsolt függvényt. Az időpontokat a WordPress időzónájában jeleníti meg.

A lista figyelmeztet, ha egy eseményhez nincs függvény csatolva, vagy ha egy esemény lemaradt az ütemezéséről. Az események listáját CSV-ként is letöltheted az **Export** gombbal.

## Kézi futtatás

Egy esemény sorában a **Run Now** hivatkozásra kattintva az esemény azonnal lefut. A bővítmény ugyanúgy futtatja, ahogy a WordPress maga futtatja az ütemezett eseményeket. Fejlesztésnél ezzel nem kell megvárnod a következő esedékes időpontot.

## Szerkesztés, szüneteltetés, törlés

- **Szerkesztés:** az **Edit** hivatkozással megváltoztathatod az esemény következő futási idejét és az ismétlődését.
- **Szüneteltetés:** a szüneteltetés letiltja az adott hook összes függvényét, de az esemény ütemezve marad. A hookot használó összes esemény együtt áll le, és együtt indul újra.
- **Törlés:** a WordPress magjának eseményeit nem lehet törölni, mert a mag újra ütemezné őket. Egyes bővítmények eseményei törlés után is visszajönnek, mert a bővítmény újra beütemezi őket. Ilyenkor a szüneteltetés a megoldás. Ha egy esemény függvénye „None”, vagyis nincs mögötte kód, általában nyugodtan törölheted.
- Új eseményt is felvehetsz, és több eseményt egyszerre is törölhetsz.

## Ütemezések

A **Cron Schedules** oldalon felveheted és törölheted az egyedi ismétlődéseket. A WordPress alapból az óránkénti, a napi kétszeri és a napi ütemezést ismeri. Az itt felvett új ütemezést utána kiválaszthatod egy esemény szerkesztésekor vagy létrehozásakor. A bővítmény leírása szerint ez a bővítményfejlesztőknek ad több lehetőséget az események ütemezésére.

## Futások naplózása

A naplózás alapból ki van kapcsolva, eseményenként kapcsolható be. A bővítmény leírása szerint ilyenkor rögzíti a futás idejét, a hibákat, a HTTP-kéréseket, a kiküldött e-maileket és az adatbázis-lekérdezéseket. A bejegyzéseket 30 napig őrzi, oldalanként legfeljebb 10 000 darabot. Az eseményparamétereket nem menti el, a HTTP-kérések lekérdezőszövegét eltávolítja. Az eredményt a **Cron Logs** oldalon látod, a **Cron Alerts** oldalon pedig e-mail-értesítést kérhetsz sikertelen, naplózott eseményről.

## PHP-események és biztonság

A bővítmény PHP-kódot futtató eseményt is létre tud hozni. Ehhez az `edit_files` jogosultság kell, vagyis aki nem szerkeszthet fájlt az adminban, az ilyen eseményt sem kezelheti. Ha a `wp-config.php`-ban bekapcsolod a `DISALLOW_FILE_MODS` vagy a `DISALLOW_FILE_EDIT` állandót, a PHP-események kezelése teljesen letiltódik.

A PHP-események egészen kikapcsolhatók:

```php title="wp-config.php"
define( 'CRONTROL_DISALLOW_PHP_EVENTS', true );
```

Ilyenkor a meglévő PHP-események a helyükön maradnak, de nem futnak le. Éles oldalon érdemes bekapcsolni, ha nincs rá szükséged.

## WP-CLI megfelelők

A WP-CLI saját `cron` parancsa a bővítmény nélkül is elérhető. A [WP-CLI](https://hub.hellowp.io/hu/knowledge-base/developer-tools/wp-cli/) dokumentációja szerint:

```bash title="Terminál"
# események listája
wp cron event list --fields=hook,next_run --format=json

# az esedékes események futtatása
wp cron event run --due-now

# egy hook következő eseményének futtatása
wp cron event run <hook>

# egy hook összes eseményének törlése
wp cron event delete <hook>

# elérhető ütemezések
wp cron schedule list
```

A `wp cron event run --due-now` figyelembe veszi a `doing_cron` tranzienst, így nem indít átfedő futást. A pontos kapcsolókat a `wp help cron event <alparancs>` mutatja.

## Mire figyelj

- **Hibakereséshez** együtt használd a [Query Monitor](https://hub.hellowp.io/hu/knowledge-base/developer-tools/query-monitor/) bővítménnyel, ha egy esemény lassú vagy hibás.
- Szüneteltetés előtt nézd meg, hogy a hookot más esemény is használja-e, mert az is megáll.
- A WP-Cron alapból látogatáskor indul. Ha pontos időzítés kell, a HelloWP HelloCron szolgáltatásával kiválthatod, erről a [WP-Cron kiváltása](https://hub.hellowp.io/hu/docs/hellotools/hellocron/wp-cron-kivaltasa/) oldalon olvashatsz.

## Hasznos linkek

- [WP Crontrol dokumentáció](https://wp-crontrol.com/)
- [WP Crontrol a GitHubon](https://github.com/johnbillion/wp-crontrol)
- [WP Crontrol a WordPress.org-on](https://wordpress.org/plugins/wp-crontrol/)
- [wp cron event a WP-CLI dokumentációban](https://developer.wordpress.org/cli/commands/cron/event/)
