Я использую WooCommerce на Wordpress 4.7.1. Раньше я выполнял 4.7.0. Когда Wordpress автоматически обновляется до 4.7.1, я вдруг начал видеть, что проверки не перенаправляются на страницу «Спасибо», и пользовательский интерфейс показал, что произошла фатальная ошибка.PHP Невозможно переопределить функцию/вызвать неопределенную функцию
Включение отладки показало следующее сообщение об ошибке:
PHP Fatal error: Cannot redeclare get_cc() (previously declared in .../templates/emails/email-addresses.php:36) in .../templates/emails/email-addresses.php on line 36
Я также подтвердил, что этот файл никогда напрямую вызывается с require
, require_once
, include
или include_once
. Это, однако, вызвано с wc_get_template()
.
Быстрый поиск привел меня к this similar question. Поэтому я добавил следующее к электронной почте-addresses.php:
if (!function_exists('get_cc')) {
function get_cc($code) {
... function body
}
}
После внесения этих изменений, я теперь получить следующее сообщение об ошибке в журнале отладки:
PHP Fatal error: Call to undefined function get_cc() in .../templates/emails/email-addresses.php on line 32
Это означает, что по какой-либо причине, PHP считает, что функция get_cc
уже существует, но в то же время она не определена.
Я не был оригинальным разработчиком. Я взял на себя проект от подрядчика, которого нет в наличии. Понятно, что этот файл сильно модифицирован из оригинала. Я уверен, что значение, возвращаемое функцией, должно быть сохранено, поэтому я не могу просто прокомментировать вызов.
Учитывая приведенную выше информацию, какие варианты я должен решить или решить эту проблему?
Определение функции находится внутри этого оператора, однако весь оператор фактически следует за вызовом функции (строка 36 - это начало определения, а вызов - в строке 32). – vbnet3d