Встроенный WP Cron годится только для самых простых задачек, для более надежного срабатывания четко когда надо используйте крон на уровне ОS. В конфиге выключите встроенный крон:
define( 'DISABLE_WP_CRON', true );
И создайте крон-задачу на уровне OS, задав нужный интервал и команду вида:
wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Вместо wget можете использовать curl, httpie, или /usr/local/bin/php, тут смотрите по ситуации. Как настраивать крон-задачи из командной строки можете погуглить, как добавить если у вас какая-нибудь CPanel - тоже.
А еще есть
https://github.com/humanmade/Cavalcade
Ну а для долгих и асинхронных скриптов есть RabbitMQ и вот это все. Посмотрите
https://github.com/10up/WP-Minions