Недавно столкнулся с проблемой — после оплаты не меняется статус ордера в магазине на Woocommerce.
Стал изучать — еще одна новость — статус ордера нельзя изменить и в админке. Он как бы меняется,
появляется соответствующая запись в логах, приходит письмо, что мой ордер Complited.
Но после перезагрузки страницы — статус опять Pending.
Пришлось пройтись по цепочке кода Woocommerce, в следствии чего пришлось и заглянуть в Базу Данных. Где и был ответ на вопрос.
Как оказалось у данного магазина на WordPress таблицы были в формате MyISAM, который подвержен разлочного рода сбоям и время от веремени стоит запускать специальные утилиты для проверки и исправления неполадок в таблицах.
В моем случае проблемным местом оказалась битая таблица «wp_term_taxonomy». И вылезло это как раз в Woocommerce при смене статуса.
В итоге фикс оказался прост: запуск «repair table» посредством phpmyadmin решило данную проблему.