functions.php включается дважды, создавая фатальные ошибки PHP

У меня есть собственный PHP-скрипт (который импортирует WordPress через wp-load.php), который я успешно использовал на многих сайтах в прошлом, но он плохо себя ведет на одном конкретном сайте, похоже, после нескольких обновлений WordPress (в настоящее время версии 4.7. 1).

Ситуация такова:

  • PHP-скрипт, требующий wp-load.php, вызывается через javascript для обработки данных формы.
  • Обработка формы работала очень хорошо, пока несколько недель назад. Теперь он бросает 500 внутренних ошибок сервера.
  • Журналы PHP показывают такие ошибки:

    PHP Неустранимая ошибка: не удается обновить my_wp_nav_menu_args () (ранее объявленный в /path/to/site/wp-content/themes/uc/functions.php:15) в / path / to / site / wp-content / themes / uc / Функции.php в строке 18

  • Похоже, что ошибка указывает, что функция functions.php вызывается дважды. Чтобы проверить это, я прокомментировал все функции в functions.php и, voila, мой PHP-скрипт работал отлично.

  • Несмотря на это, остальная часть сайта работает отлично … хотя он медленно загружается, и я запускаю его на своей локальной машине. Хммм.

  • FYI, нет ничего особенного или необычного в отношении остальной части сайта. Я использую ACF для многих вещей, но у меня никогда не было проблем с этим.

Может ли быть так, что functions.php каким-то образом вызывается дважды? Если да, то как? У кого-либо еще была аналогичная проблема с недавними обновлениями основного ядра WP? Станет ли Мария Бет и Виктор настоящей любовью?

Выясните все это и многое другое о следующем эпизоде ​​«Пылающие деньги способом WordPress»!

Любая помощь будет оценена СООО.

Ах, jeez: простая процедура ol-check-all-your-plugins-first спасла бы меня некоторое время.

По-видимому, причиной этой проблемы был сторонний плагин ACF, https://wordpress.org/plugins/acf-google-font-selector-field/ . Медленная загрузка страницы, о которой я упоминал, также была исправлена.

Это очень плохо. Мне нужен этот глупый плагин.

1) Я думаю, что проблема должна быть решена, если в вашем пользовательском php-скрипте вы выполните exit; после выполнения ваших желаемых действий.

2) Кроме того, вы можете использовать что-то вроде этого в начале ваших функций. Php:

 if (in_array(__FILE__, get_included_files())) return;