Возникла ситуация, при которой метод get_term вызывался 20 000 раз. Причем даже на чистой установке WP. Базовая причина была ясна — у нас было 60 постов на странице и у каждого поста около 1000 категорий. Что конечно не очень правильно, но имели то что имели.
Как выяснить почему get_term() вызывается 20 000 раз? Просто поиском по коду и методом тыка? Там очень много мест.
xdebug — к сожалению не стоит.
Хорошее решение нашлось тут: https://stackoverflow.com/questions/8369275/how-can-i-save-a-php-backtrace-to-the-error-log
error_log(print_r(debug_backtrace(), true));
Запись бэктрейса в лог.
В wp-config задали счетчтик: $GLOBALS[‘i’] = 0;
Затем в функции get_term() поставили плюсы $GLOBALS[‘i’]++ и условие на 10000 итерации вызвать бэктрейс.
Так стало ясно кто и зачем вызывал этот метод.
Нашли нужный хук, который позволял оптимизировать код и убрать лишние запросы и потери времени.
Источник: https://wpcraft.ru/2018/otladka-koda-cherez-bektrejs-debug_backtrace/