Частая проблема, которая встречается при написании плагинов и скриптов под WordPress, это таймаут веб сервера и соответствующие ошибки, если нам нужно обрабатывать большие объемы данных и соответственно это может занимать долгое время. В этом случае веб-сервер просто оборвет сессию и получаем не законченный скрипт или ошибки.

Как вариант можно сделать через AJAX и обрабатывать порциями, постоянно вызывая скрипт с клиентской страницы. Но для этого нужно чтобы страница была открыта.

Еще вариант, это сделать очередь через cron, но и это не самый лучший вариант. Сложнее писать и может вызвать тормоза для пользователей, если работает типовой wp_cron.

И есть еще один интересный вариант. Это если скрипт через определенные порции будет вызывать сам себя. В WordPress для этого есть отличная функция http://codex.wordpress.org/Function_Reference/wp_remote_get

Сделал порцию, закончил, и если работа еще осталась то вызвал себя по новой.

Пока что самое оптимальное решение, которое нашлось.

Но тут может возникнуть желание мониторинга ситуации и прогресса. В этом случае отлично подойдет AJAX запросы текущей ситуации (например хранение количества обработанных строк в таблице опций или в кеше) или даже Hearbeat API.