Вопрос или проблема
Я использую WordPress 4.4.2. У меня есть один сайт, который работает отлично. Когда я пытался настроить другой сайт, я получил следующую ошибку при попытке сохранить страницу “общие настройки”:
Уловимая фатальная ошибка: объект класса WP_Error не может быть преобразован в строку в /{site-url}/wp-includes/formatting.php на строке 1025'
Перед сохранением настроек я удалил существующую тестовую страницу и тестовый пост и создал новую страницу. Больше ничего не трогал.
После изучения проблемы я сделал следующее:
- Отключил все плагины (ошибка сохраняется)
- Переключился на стандартную тему WordPress (ошибка сохраняется)
- Переустановил текущую версию WordPress (ошибка сохраняется)
- Обновил сетевой сайт (ошибка сохраняется)
- Проверил таблицы Опций в phpMyAdmin, подозрительных строк нет
- Сравнил таблицы Опций между сайтом с ошибкой и без ошибки, они выглядят одинаковыми
- Запустил плагин WP-Optimize
Я заметил, что могу сохранять значения в таблице Опций только из phpMyAdmin. Когда я пытаюсь сделать это через браузер (например, wp-admin/network/site-settings.php?id=#
), опции не сохраняются.
Когда я создаю дополнительный сайт для тестирования, у меня нет этой проблемы. Очевидно, я могу просто удалить сайт и начать заново, но а) проблема также существует на моем основном мультисайте, и б) я хотел бы понять, в чем дело.
Это ошибка? Я пропустил что-то очевидное?
У меня была такая же проблема, и я очистил содержимое строки с именем theme_mods_YOURTHEMENAME
(в таблице wp-options
)
Я скопировал/вставил содержимое из предыдущей резервной копии.
Теперь все работает хорошо.
Вы не включили все строки страницы ошибки. Только эта строка недостаточна. Как быстрое решение вы можете вставить в wp-includes\formatting.php
строку 1025:
var_dump($string);
var_dump(debug_backtrace());
exit;
и посмотрите, что у вас выйдет.
Ответ или решение
Исходя из описанной вами проблемы, ошибка "Catchable fatal error: Object of class WP_Error could not be converted to string" указывает на то, что происходит попытка использовать объект типа WP_Error
в контексте, где ожидается строка. Это может произойти в процессе записи настроек, когда значение, которое вы пытаетесь сохранить, оказывается неправильным.
Вот несколько шагов для диагностики и устранения проблемы:
-
Определите источник ошибки: Выполнение кода, который вы упомянули, с использованием
var_dump
, может помочь вам понять, что именно вызывает ошибку. Проверьте значение переменной$string
перед строкой 1025 в файлеwp-includes/formatting.php
и убедитесь, что это фактически строка. Это следует сделать с осторожностью, так как внесение изменений в ядро WordPress является временной мерой. -
Очистка содержимого: Учитывая, что вы уже провели множество тестов, рекомендую вам также проверить содержимое строки
theme_mods_YOURTHEMENAME
в таблицеwp-options
. Как и в случае с другим пользователем, у которого была похожая ошибка, возможно, там хранятся неверные данные, которые вызывают сбой. -
Проверка пользовательских полей: Убедитесь, что нет пользовательских полей или других настроек, которые могли бы быть некорректно отформатированы. Если вы использовали какие-то плагины, которые могли изменить структуру базы данных, стоит проверить их настройки.
-
Копирование настроек: Если у вас есть доступ к рабочему сайту, попробуйте скопировать настройки и параметры конфигурации из этого сайта. Часто это может помочь восстанавливать ошибочные частично заполненные поля в новой таблице.
-
Логи ошибок: Если проблема остаётся неразрешённой, проверьте логи ошибок вашего веб-сервера. Это может дать дополнительную информацию о причинах произошедшей ошибки.
-
Обновление и совместимость: Убедитесь, что ваша версия WordPress и все используемые плагины совместимы друг с другом. Если ошибка возникла после установки нового плагина или темы, попробуйте деактивировать их.
-
Обратитесь к профессионалам: Если вы не можете самостоятельно решить проблему, рассмотрите возможность обращения к специалистам по WordPress, которые могут помочь более глубоко проанализировать проблему.
Хотя вы можете начать заново с нового сайта, знайте, что это не обязательно решит проблемы, существующие в вашей текущей установке. Обычно лучше понять и устранить основную причину неисправности.
Если вам нужны дальнейшие разъяснения или помощь, не стесняйтесь задавать вопросы.