Wordpress WP CLI Cron Scheduled Events Os Cron
Definisi
WP-CLI adalah command-line tool untuk mengelola WordPress tanpa browser: install plugin, update, import/export, reset password, menjalankan cron, dan banyak lagi. WP-Cron adalah sistem terjadwal WordPress yang berbasis request (bukan cron OS) — event dijalankan saat ada visit yang memicu wp-cron.php, bukan pada jam presisi.
Kapan dipakai
- WP-CLI: operasi bulk/admin otomatis, deployment script, migrasi, debug server.
- WP-Cron: tugas berkala di dalam WordPress (kirim email mingguan, hapus transien kadaluwarsa, sinkron data) tanpa mengonfigurasi cron OS.
- Untuk tugas yang butuh presisi/volume tinggi, matikan WP-Cron bawaan dan ganti dengan cron OS yang memanggil
wp cron event run --due-now.
Cara kerja
WP-CLI dasar
wp plugin list
wp plugin update --all
wp user reset-password admin --skip-email
wp search-replace 'http://old.test' 'https://new.com' --allJadwalkan cron lewat code
if (!wp_next_scheduled('my_daily_task')) {
wp_schedule_event(time(), 'daily', 'my_daily_task');
}
add_action('my_daily_task', function () {
// kerjakan tugas berkala
});Jalankan cron manual
wp cron event list
wp cron event run --due-nowStruktur alur WP-Cron
Loading diagram...
Contosi WP-CLI custom command
// di plugin
WP_CLI::add_command('myplugin flush', function () {
delete_transient('harga_cache');
WP_CLI::success('cache dibersihkan');
});Lalu jalan: wp myplugin flush.
Catatan implementasi
- WP-Cron butuh traffic; di site low-traffic, jadwal bisa telat. Pakai cron OS untuk garantipada.
wp cron event run --due-nowaman untuk dijadwalkan cron OS setiap menit.- WP-CLI butuh PHP CLI dan
wp-cli.pharatau instalasi global; pastikan usernya sama dengan web server saat akses file.
Kesalahan umum
- Mengandalkan presisi WP-Cron: event bisa telat kalau site sepi.
- Meninggalkan banyak event duplikat:
wp_schedule_eventdipanggil berulang tanpa cekwp_next_scheduled, memicu tugas berjalan berkali-kali. - Cron melakukan heavy work di request: memperlambat halaman karena cron ikut jalan.
- WP-CLI di environment salah: menulis file sebagai root tapi web server sebagai www-data, permission jadi berantakan.