X

WordPress плагин Bulk Move и ошибка Maximum execution time

Для того чтобы в WordPress переместить пакетно много постов из одной категории в другую есть плагин: Bulk Move. Однако с больши кол-вом постов, он отказался у меня работать и выпал с ошибкой: Fatal error: Maximum execution time of 30 seconds exceeded in www\wp-includes\class-http.php on line 1155

Справиться с ней довольно просто, нужно увеличить максимальное время работы скрипта. Для этого есть функция php, set_time_limit(x), где x=кол-во секунд разрешенных работать скрипту с момента вызова этой функции.

Её, я думаю можно прописать и в www/wp-config.php, но таким образом мы установим время работы всем скриптам. Поэтому я её установил прямо в вызове плагина. Для этого:

  1. Открываем в редакторе код плагина: www/wp-content/plugins/bulk-move/bulk-move.php
  2. Ищем там такой участок:
    case "bulk-move-cats":
        ...
        foreach ($posts as $post) {
            $current_cats = wp_get_post_categories($post->ID)
  3. И после foreach добавляем set_time_limit(30), получится так:
    case "bulk-move-cats":
        ...
        foreach ($posts as $post) {
            set_time_limit(30);
            $current_cats = wp_get_post_categories($post->ID)
  4. Вот и всё, теперь плагин не будет выпадать с ошибкой

Если же вы используете nginx, то возможно вы получите ошибку 503, т.к. плагин может работать достаточно долго. В таком случае, легче всего, скопировать базу к себе на комп, в какой-нибудь "быстрый-пакет" типа Денвера, и уже в нем выполнить все нужные операции, а после перезалить базу на удаленный сервер.

И конечно, не забывайте делать бэкапы - это экономит много времени и нервов 🙂

Категории: CMS Wordpress
Тэги: bulk-move