Вопрос или проблема
Я уже пробовал все решения, которые можно найти в интернете, например, добавил это в wp-config.php
:
1 define(‘CONCATENATE_SCRIPTS’, false);
2 Я также отключил все плагины и сменил тему, результата нет
3 Убедился, что разрешения правильные и визуальный редактор включен
4 Пытался заменить другим редактором, кроме TinyMCE, результата нет
Я предполагаю, что это проблема сервера, потому что другой сайт на сервере имеет ту же проблему.
Есть ли предложения, как отладить это? “Добавить медиа” работает нормально, так что это не проблема JS или разрешений.
Я думаю, это может быть связано с mod_sec
, но я его отключил и результата нет. Не уверен, с чего начать процесс отладки. Есть ли предложения?
Редактирование: Я нашел проблему, но пока не решение.
Следующие две строки отсутствуют в исходном коде на моем сломанном сервере – на работающем сервере они не отсутствуют:
<div id="wp-content-editor-tools" class="wp-editor-tools hide-if-no-js">
<a id="content-html" class="wp-switch-editor switch-html" onclick="switchEditors.switchto(this);">Текст</a>
<a id="content-tmce" class="wp-switch-editor switch-tmce" onclick="switchEditors.switchto(this);">Визуально</a>
Обновление: Очевидно, что некоторым людям повезло, отключив свой антивирус, смотрите здесь http://wordpress.org/support/topic/htmlvisual-missing-on-341-and-342
У меня была похожая проблема, и она не решалась с помощью упомянутых выше ответов. Я потерял доступ к визуальному редактору в классическом редакторе и остался в HTML. При использовании Гутенберга я потерял доступ к визуальному редактору, не мог добавлять блоки и не мог переключаться с вкладок “Визуально” на “Код”.
Проблема была вызвана тем, что AWS CloudFront удалял заголовки UserAgent, которые WordPress использует для определения доступности визуального редактирования.
Если кто-то столкнулся с такой же проблемой и вышеуказанные ответы не помогли, обратите внимание на ваше хостинговое решение и проверьте, не похож ли ваш случай на мой.
Решение заключается в корректировке обработки заголовков на стороне вашего хостинга/AWS, как описано в этом посте, или вы можете использовать следующий код, чтобы повторно активировать флаги, которые WordPress отключает из-за отсутствия заголовка UserAgent:
function richedit_wp_cloudfront () {
add_filter('user_can_richedit','__return_true');
}
add_action( 'init', 'richedit_wp_cloudfront', 9 );
Проблема и решение подробно описаны в нескольких местах:
Если вы используете AWS и CloudFront, вам нужно передавать следующие заголовки:
Host
Options
Referer
Origin
User-Agent
Вы можете сделать это другим поведением и использовать это только для “wp-admin”, чтобы воспользоваться кэшированием Cloudfront для всех страниц (кроме администраторских).
Также, если вы используете CloudFront для HTTPS, а ваш источник — HTTP, добавьте следующую строку в начало файла wp-config.php (заголовок Origin должен был решить эту проблему, но если он этого не сделал):
$_SERVER['HTTPS'] = 'on';
Так как сервер использует HTTP (порт 80), а вы используете публичный сертификат AWS, вам нужно заставить WordPress думать, что сайт использует HTTPS, иначе ссылки на скрипты и CSS не загрузятся, так как ссылки будут HTTP, а не HTTPS. WordPress не может определить, происходит ли редирект CloudFront на HTTPS, когда он использует функцию is_ssl()
, так что этот хак обманет его.
Эта ссылка также содержит некоторое объяснение:
https://jeffreyeverhart.com/2018/12/07/setup-aws-cloudfront-for-wordpress-scaling-this-blog/
Я забыл добавить решение. Оказывается, по какой-то причине мой файл php.ini
удалил сегментацию APC, и весь мой сервер оказался фрагментирован, что сломало JavaScript.
ВОТ РЕШЕНИЕ)
Вы, возможно, уже знаете это, но если вы перейдете в профиль WordPress, там есть флажок “Отключить визуальный редактор при написании”, убедитесь, что он снят.
Удачи!
Если Cloudfront стоит перед вашей установкой WordPress, опция Визуального редактора может оказаться неактивной, если вы не передаете все необходимые заголовки.
Внутри Cloudfront:
- Перейдите к вашей Дистрибуции
- Поведения
- Если вы создали поведение, такое как /wp-admin/*, отредактируйте его, в противном случае отредактируйте По умолчанию (*)
- В разделе Ключ кэша и запросы источника, убедитесь, что вы передаете как минимум: Authorization, X-WP-Nonce. Вероятно, у вас есть и другие заголовки (такие как Origin, Host и т.д., необходимые для работы WordPress за Cloudfront).
- Сохраните, дайте дистрибуции обновиться и убедитесь, что Визуальный редактор работает.
(Примечание: в другом ответе с приведенным ниже фрагментом кода для functions.php это также помогло мне:
function richedit_wp_cloudfront () {
add_filter('user_can_richedit','__return_true');
}
add_action( 'init', 'richedit_wp_cloudfront', 9 );
однако, я хотел выяснить корень проблемы, чтобы предотвратить появление других проблем, связанных с заголовками, в других местах.)
.
Ответ или решение
Для решения проблемы отсутствия визуального редактора в WordPress, которая предполагается вызванной серверными проблемами, важно применять системный подход к диагностике и устранению неполадок. Давайте подробно рассмотрим возможные этапы решения проблемы, учитывая предоставленную информацию и известные методы устранения неполадок.
Теория
Отсутствие визуального редактора в WordPress может быть вызвано различными факторами, включая проблемы с конфигурацией сервера, отсутствующими или неправильно настроенными заголовками HTTP, а также конфликтами с плагинами или темами. Когда проблема затрагивает несколько сайтов на одном сервере, это указывает на серверную природу проблемы, а не на индивидуальные настройки конкретного сайта.
Пример
Учитывая, что стандартные решения, такие как отключение всех плагинов, смена темы и проверка корректности прав доступа, уже были использованы безуспешно, важно рассмотреть менее очевидные факторы:
-
Заголовки HTTP и CloudFront:
В одном из примеров, описанных пользователями, обнаружено, что AWS CloudFront удаляет заголовок UserAgent, что нарушает функционирование визуального редактора. Это происходит потому, что WordPress использует UserAgent для определения доступности визуального редактирования. Решение заключается в настройке заголовков на уровне CloudFront, чтобы правильно передавать нужные заголовки, особенно для административных маршрутов. -
Настройки PHP и APC:
Другой случай указывает на проблему с конфигурацией PHP, где настройка сегментации APC исказила работу сервера и нарушила корректную загрузку JavaScript. -
Конфигурация mod_sec:
Хотя модуль mod_security (mod_sec) мог быть подозреваемым, уже было проверено, что его отключение не решает проблему.
Применение
Приступая к диагностике и устранению проблемы, важно следовать системному процессу:
-
Проверка профиля пользователя WordPress:
Убедитесь, что в профиле администратора установлен флажок, позволяющий использование визуального редактора. -
Анализ и настройка HTTP заголовков:
Для пользователей, использующих AWS и CloudFront, настройка заголовков должна включать: Host, Options, Referer, Origin, User-Agent. Также важно убедиться, что заголовки Authorization и X-WP-Nonce корректно передаются для "/wp-admin/*". -
Решение обходных путей:
Временно включить визуальный редактор путем добавления в файлfunctions.php
следующего кода:function richedit_wp_cloudfront () { add_filter('user_can_richedit','__return_true'); } add_action( 'init', 'richedit_wp_cloudfront', 9 );
Этот способ может использоваться для тестирования, пока не будет найдено основное решение причины проблемы.
-
Проверка конфигурации PHP:
Обязательно проверяйте и корректируйтеphp.ini
на наличие ошибок или несовместимых настроек, таких как неверно настроенная сегментация APC, которые могут влиять на выполнение скриптов. -
Диагностика HTTPS:
Если сервер работает по портам HTTP при использовании сертификатов AWS, добавление вwp-config.php
таких строк как$_SERVER['HTTPS'] = 'on';
может устранить проблемы связанные с определением протокола, поскольку WordPress может некорректно определять HTTPS за прокси-серверами. -
Мониторинг и документирование:
Ведение журнальных файлов и использование инструментов мониторинга для отслеживания заголовков HTTP, сетевых запросов и реакций сервера может предложить ценную информацию для диагностики и решения проблемы.
Выполнение вышеперечисленных шагов с учетом контекста вашего серверного окружения и специфики используемой инфраструктуры должно помочь в решении проблемы с отсутствием визуального редактора в WordPress.