WordPress Customizer не загружается

Вопрос или проблема

Я пытаюсь переключить свой сайт WordPress на новую тему. Я смог воспроизвести первоначальную проблему на своем живом сайте, но все дальнейшее тестирование проводил в локальной тестовой среде.

Проблема: Пока я остаюсь с текущей темой, персонализатор работает нормально. Однако, как только я переключаюсь на другую тему, персонализатор перестает работать. Он показывает только пустую страницу в живом предварительном просмотре и никаких опций в левом боковом меню.

Вот что я пробовал/нашел до сих пор:

  • WordPress на версии 6.1.1
  • Проблема возникает в браузерах Chrome, Brave и Firefox (другие не пробовал)
  • Проблема возникает как на PHP 7.4, так и на 8.0 и 8.1
  • Очистил все кеши
  • Деактивировал все плагины
  • Снова сохранил настройки постоянных ссылок
  • Проблема также возникает с стандартными темами WordPress (я пробовал 2019 и 2021)
  • Плагин проверки здоровья WordPress не показал никаких проблем или ошибок
  • Отладка сценариев не решила проблему
  • Заменил файлы wp-admin и wp-includes файлами из чистой установки WP без эффекта
  • Поддержка текущей темы (Newspaper от tagdiv) подтвердила, что они не используют никаких элементов персонализатора, которые могли бы вызвать эту проблему

Ошибка в консоли JavaScript

Uncaught SyntaxError: Unexpected token '<' ; customize.php:6017

Я получаю следующие ошибки в журнале ошибок PHP:

[19-Nov-2022 14:00:13 UTC] PHP Warning:  parse_url() ожидает строку в качестве первого параметра, массив получен в […]\wp-includes\media.php на строке 5104
[19-Nov-2022 14:00:13 UTC] PHP Stack trace:
[19-Nov-2022 14:00:13 UTC] PHP   1. {main}() […]\wp-admin\customize.php:0
[19-Nov-2022 14:00:13 UTC] PHP   2. do_action() […]\wp-admin\customize.php:292
[19-Nov-2022 14:00:13 UTC] PHP   3. WP_Hook->do_action() […]\wp-includes\plugin.php:517
[19-Nov-2022 14:00:13 UTC] PHP   4. WP_Hook->apply_filters() […]\wp-includes\class-wp-hook.php:332
[19-Nov-2022 14:00:13 UTC] PHP   5. WP_Customize_Manager->customize_pane_settings() […]\wp-includes\class-wp-hook.php:308
[19-Nov-2022 14:00:13 UTC] PHP   6. WP_Customize_Cropped_Image_Control->json() […]\wp-includes\class-wp-customize-manager.php:4985
[19-Nov-2022 14:00:13 UTC] PHP   7. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\class-wp-customize-control.php:337
[19-Nov-2022 14:00:13 UTC] PHP   8. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\customize\class-wp-customize-cropped-image-control.php:78
[19-Nov-2022 14:00:13 UTC] PHP   9. attachment_url_to_postid() […]\wp-includes\customize\class-wp-customize-upload-control.php:59
[19-Nov-2022 14:00:13 UTC] PHP  10. parse_url() […]\wp-includes\media.php:5104
[19-Nov-2022 14:00:13 UTC] PHP Warning:  strpos() ожидает строку в качестве первого параметра, массив получен в […]\wp-includes\media.php на строке 5111
[19-Nov-2022 14:00:13 UTC] PHP Stack trace:
[19-Nov-2022 14:00:13 UTC] PHP   1. {main}() […]\wp-admin\customize.php:0
[19-Nov-2022 14:00:13 UTC] PHP   2. do_action() […]\wp-admin\customize.php:292
[19-Nov-2022 14:00:13 UTC] PHP   3. WP_Hook->do_action() […]\wp-includes\plugin.php:517
[19-Nov-2022 14:00:13 UTC] PHP   4. WP_Hook->apply_filters() […]\wp-includes\class-wp-hook.php:332
[19-Nov-2022 14:00:13 UTC] PHP   5. WP_Customize_Manager->customize_pane_settings() […]\wp-includes\class-wp-hook.php:308
[19-Nov-2022 14:00:13 UTC] PHP   6. WP_Customize_Cropped_Image_Control->json() […]\wp-includes\class-wp-customize-manager.php:4985
[19-Nov-2022 14:00:13 UTC] PHP   7. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\class-wp-customize-control.php:337
[19-Nov-2022 14:00:13 UTC] PHP   8. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\customize\class-wp-customize-cropped-image-control.php:78
[19-Nov-2022 14:00:13 UTC] PHP   9. attachment_url_to_postid() […]\wp-includes\customize\class-wp-customize-upload-control.php:59
[19-Nov-2022 14:00:13 UTC] PHP  10. strpos() […]\wp-includes\media.php:5111
[19-Nov-2022 14:00:13 UTC] PHP Notice:  Функция wpdb::prepare была вызвана <strong>неправильно</strong>. Неподдерживаемый тип значения (массив). Пожалуйста, смотрите <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Отладка в WordPress</a> для получения дополнительной информации. (Это сообщение было добавлено в версии 4.8.2.) в […]\wp-includes\functions.php на строке 5835
[19-Nov-2022 14:00:13 UTC] PHP Stack trace:
[19-Nov-2022 14:00:13 UTC] PHP   1. {main}() […]\wp-admin\customize.php:0
[19-Nov-2022 14:00:13 UTC] PHP   2. do_action() […]\wp-admin\customize.php:292
[19-Nov-2022 14:00:13 UTC] PHP   3. WP_Hook->do_action() […]\wp-includes\plugin.php:517
[19-Nov-2022 14:00:13 UTC] PHP   4. WP_Hook->apply_filters() […]\wp-includes\class-wp-hook.php:332
[19-Nov-2022 14:00:13 UTC] PHP   5. WP_Customize_Manager->customize_pane_settings() […]\wp-includes\class-wp-hook.php:308
[19-Nov-2022 14:00:13 UTC] PHP   6. WP_Customize_Cropped_Image_Control->json() […]\wp-includes\class-wp-customize-manager.php:4985
[19-Nov-2022 14:00:13 UTC] PHP   7. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\class-wp-customize-control.php:337
[19-Nov-2022 14:00:13 UTC] PHP   8. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\customize\class-wp-customize-cropped-image-control.php:78
[19-Nov-2022 14:00:13 UTC] PHP   9. attachment_url_to_postid() […]\wp-includes\customize\class-wp-customize-upload-control.php:59
[19-Nov-2022 14:00:13 UTC] PHP  10. wpdb->prepare() […]\wp-includes\media.php:5116
[19-Nov-2022 14:00:13 UTC] PHP  11. _doing_it_wrong() […]\wp-includes\class-wpdb.php:1453
[19-Nov-2022 14:00:13 UTC] PHP  12. trigger_error() […]\wp-includes\functions.php:5835
[19-Nov-2022 14:00:13 UTC] PHP Notice:  Функция wpdb::prepare была вызвана <strong>неправильно</strong>. Запрос ожидал только одно заполнительное значение, но был отправлен массив с несколькими заполнителями. Пожалуйста, смотрите <a href="https://wordpress.org/support/article/debugging-in-wordpress/">Отладка в WordPress</a> для получения дополнительной информации. (Это сообщение было добавлено в версии 4.9.0.) в […]\wp-includes\functions.php на строке 5835
[19-Nov-2022 14:00:13 UTC] PHP Stack trace:
[19-Nov-2022 14:00:13 UTC] PHP   1. {main}() […]\wp-admin\customize.php:0
[19-Nov-2022 14:00:13 UTC] PHP   2. do_action() […]\wp-admin\customize.php:292
[19-Nov-2022 14:00:13 UTC] PHP   3. WP_Hook->do_action() […]\wp-includes\plugin.php:517
[19-Nov-2022 14:00:13 UTC] PHP   4. WP_Hook->apply_filters() […]\wp-includes\class-wp-hook.php:332
[19-Nov-2022 14:00:13 UTC] PHP   5. WP_Customize_Manager->customize_pane_settings() […]\wp-includes\class-wp-hook.php:308
[19-Nov-2022 14:00:13 UTC] PHP   6. WP_Customize_Cropped_Image_Control->json() […]\wp-includes\class-wp-customize-manager.php:4985
[19-Nov-2022 14:00:13 UTC] PHP   7. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\class-wp-customize-control.php:337
[19-Nov-2022 14:00:13 UTC] PHP   8. WP_Customize_Cropped_Image_Control->to_json() […]\wp-includes\customize\class-wp-customize-cropped-image-control.php:78
[19-Nov-2022 14:00:13 UTC] PHP   9. attachment_url_to_postid() […]\wp-includes\customize\class-wp-customize-upload-control.php:59
[19-Nov-2022 14:00:13 UTC] PHP  10. wpdb->prepare() […]\wp-includes\media.php:5116
[19-Nov-2022 14:00:13 UTC] PHP  11. _doing_it_wrong() […]\wp-includes\class-wpdb.php:1496
[19-Nov-2022 14:00:13 UTC] PHP  12. trigger_error() […]\wp-includes\functions.php:5835

К сожалению, я сам не могу это понять. Поэтому любые идеи о том, где искать дальше, будут очень признательны. Спасибо большое!

После долгого времени попыток и возни я наконец нашел решение этой проблемы! Я попробовал несколько плагинов для сброса персонализатора и наткнулся на этот. Установив его, я удалил все найденные им настройки тем в базе данных (была одна безымянная, которую я подозревал как виновника). После удаления их всех и очистки кеша браузера экран персонализатора снова заработал! Я не могу выразить, как я счастлив. Поэтому я решил опубликовать это здесь на случай, если кто-то еще столкнется с этой проблемой.

Больше обходной путь, чем решение проблемы: я смог снова запустить персонализатор, деактивировав любые плагины, которые я не использовал (в WordPress перейдите в Плагины).

Примечание: у меня возникала ошибка 500, когда я пытался открыть персонализатор.

  • В моем случае из-за проблемы с HTTPS.
  • У меня перенаправление HTTPS с CDN (cloudflare), как на основном блоге, так и в wp-admin.
  • Чтобы решить проблему, убедитесь, что перенаправление HTTPS применяется только к основному блогу, а не к wp-admin.
  • Или измените URL сайта с http://blog.your.me на https://blog.your.me (гипотетически).

enter image description here

.

Ответ или решение

При решении проблемы с загрузкой настройщика WordPress, следует учитывать многочисленные факторы, влияющие на этот процесс. В дальнейшем мы подробно рассмотрим возможные причины этой проблемы и предложим способы её решения.

Теория: Понимание проблемы

Настройщик WordPress — это инструмент, предоставляющий пользователям возможность изменять внешний вид и настройки темы сайта в реальном времени. Однако, бывают случаи, когда он не загружается, что может быть вызвано различными факторами. Вызывает это досаду у пользователей, так как ограничения в доступе к настройкам ограничивают возможности персонализации сайта.

Зачастую такие проблемы могут быть связаны с несовместимостью темы или плагинов, ошибками в коде JavaScript или PHP, конфигурациями сервера и безопасности и даже проблемами кэширования. Понимание данной теории позволяет определить область, где может скрываться источник ошибки.

Пример: Детализация проблемы

Вы столкнулись с проблемой, когда при смене темы в WordPress, настройщик перестаёт работать корректно, отображая лишь пустую страницу. Вы выполнили ряд шагов для диагностики проблемы, но они не привели к нужному результату:

  • Проблема не связана с конкретным браузером, так как воспроизводится в Chrome, Brave и Firefox.
  • Используемая версия PHP, как и версия WordPress, не являются причиной, поскольку проблема возникает на PHP 7.4, 8.0 и 8.1, а версия WordPress — 6.1.1.
  • Проблема сохраняется даже при отключённой деятельности всех плагинов, очищенных кэшах и резовке настроек постоянных ссылок.
  • Анализ логов выявил ошибки, такие как Uncaught SyntaxError: Unexpected token '<' в консоли JavaScript и предупреждения PHP о неверном типе параметров.

Применение: Рекомендации и Решения

  1. Проверка конфигурации HTTPS:
    Если на вашем сайте включена HTTPS-редирекция через CDN, как Cloudflare, важно убедиться, что она применяется корректно. Часто проблемы возникают из-за неправильной настройки редиректа для страницы администраторской панели (wp-admin). Решение — либо исключить wp-admin из редиректа, либо изменить URL сайта на HTTPS.

  2. Очистка настроек кастомизатора:
    Использование плагина для сброса настроек кастомизатора может помочь, особенно если дело в конфликтных параметрах темы. Данный метод предполагает удаление всех сохранённых настроек тем в базе данных, что может восстановить работоспособность кастомизатора.

  3. Обновление файлов:
    Вы уже пробовали заменять файлы wp-admin и wp-includes, но важно убедиться, что используемая тема совместима с текущей версией WordPress, и что в директориях нет кастомных изменений, влияющих на работу дополнительного функционала.

  4. Тестирование стандартных тем:
    Если проблема сохраняется даже с установленными стандартными темами WordPress (например, Twenty Nineteen или Twenty Twenty-One), это может указывать на более глубокую проблему в настройках WordPress или сервере.

  5. Углублённое отладка PHP:
    Поскольку в логах PHP были выявлены ошибки, связанные с неверными типами данных, рекомендуется произвести полную отладку кода. Это может потребовать обращения к разработчику или специалисту по WordPress, который поможет обратить внимание на спорные места в коде.

  6. Использование сторонних диагностических инструментов:
    Программы и плагины для диагностики могут выявить скрытые конфликты и рекомендации по исправлению возникших ошибок. Это можно дополнить включением режима отладки WordPress, чтобы получать более детальные журналы об ошибках.

Следуя этим рекомендациям, можно значительно повысить вероятность успешного решения проблемы с загрузкой настройщика в WordPress. Однако, если ситуация продолжает оставаться нерешённой, не стоит исключать возможность привлечения профессиональной помощи для глубокой диагностики и устранения неполадок.

Оцените материал
Добавить комментарий

Капча загружается...