Все пользовательские ссылки внезапно лишились атрибутов href

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

Краткая версия: перед обновлением до WP 4.5 в день, когда единственным известным изменением было добавление страницы в подменю через панель администрирования навигационного меню, все ссылки меню типа “Пользовательская ссылка”, где мы указываем URL, внезапно потеряли свои атрибуты href. Ссылки типа “Страница” по-прежнему их имеют.

После многочисленных экспериментов я подтвердил, что отключение всех плагинов не изменило ситуацию, но установка темы TwentyFifteen исправила это.

Авторы темы больше недоступны для помощи.

Длинная версия:

На данный момент мне удалось подтвердить, что все некорректные элементы не имеют атрибута href в своем теге, поэтому они не знают, на что ссылаться, и что все из них имеют тип “Пользовательская ссылка”, где мы указали адрес.

Я отключал и заново включал все плагины, но это на это не повлияло. Я только что обновил WordPress до версии 4.5, которая вышла сегодня. Это не исправило ситуацию.

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

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

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

Добавил CSS-класс к одной из пользовательских ссылок через админку и подтвердил, что он появился на обрамляющем <li> на фронтэнде, но это не помогло с href на ссылке.

Пока что единственная поддержка, которую я нашел по этому вопросу, говорила, что у них была поврежденная таблица базы данных, которая это вызывала. Поэтому я выполнил команду CHECK TABLE для каждой таблицы WP, и все они вернулись как OK.

Смена темы на TwentyFifteen сделала так, что все элементы меню имеют правильные атрибуты href. При возврате обратно проблема повторяется.

В header.php меню формируется с помощью wp_nav_menu(array('menu_class'=>'sf-menu')). Я предполагаю, что sf – это superfish. Я убрал класс, и меню было выведено без стилей, но все еще без href для пользовательских ссылок.

functions.php, похоже, не имеет замены для wp_nav_menu().

Что делать дальше?

Я думаю, что это, вероятно, связано с проблемой обновления ядра до jQuery 1.12. Ознакомьтесь с этой страницей. В обсуждении ядра вчера это был самый высокий приоритет, и было решено, что это зависит от разработчиков тем и пользователей для обновления. Пожалуйста, посмотрите на эту ссылку, она очень полезна. Они также отметили, что из-за этого изменения и возникших проблем будет больше публикаций на “make”, а также на wp tavern для пользователей.

Я также должен уточнить, что упоминаемое мной исправление заключается в том, чтобы изменить любую: a[href=#scroll-to-top] на a[href="#scroll-to-top"]… обратите внимание на двойные кавычки!

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

Ваша проблема с отсутствием атрибутов href у пользовательских ссылок в меню после обновления до WordPress 4.5 может быть связана с несколькими факторами, включая изменения в JavaScript, касающиеся новой версии jQuery. Вот шаги, которые вы можете предпринять, чтобы попытаться решить эту проблему:

  1. Проверка кода темы: Убедитесь, что в вашей теме нет изменений, которые могли бы повлиять на генерацию меню. Посмотрите на файл header.php, где используется функция wp_nav_menu(). Убедитесь, что она правильно настроена и что в вашей теме не переопределено поведение этой функции.

  2. Проблемы с JavaScript: Ваша проблема может быть связана с изменениями в jQuery 1.12. Это может вызывать проблемы, если в вашем коде используются селекторы или поведение, которые несовместимы с новой версией jQuery. Проверьте наличие элементов меню, которые могут содержать обращение к ссылкам без окружения в кавычках, например:

    a[href=#scroll-to-top]

    Убедитесь, что вместо этого у вас:

    a[href="#scroll-to-top"]

    Обратите внимание на использование двойных кавычек.

  3. Отключение пользовательского кода и дополнительных скриптов: Если у вас есть пользовательские скрипты или дополнительные скрипты от сторонних разработчиков, временно отключите их и проверьте, сохраняется ли проблема. Возможно, какой-то из скриптов мешает корректной работе меню.

  4. Проверка на конфликты с плагинами: Вы уже пробовали отключать все плагины, но стоит убедиться, что нет конфликтов внутри самой темы. Если у вас есть возможность разрабатывать, попробуйте создать дочернюю тему и тестировать меню с минимальными изменениями.

  5. Обновление темы: Если ваша тема больше не поддерживается разработчиком, возможно, стоит рассмотреть вариант поиска аналогичной, но активно поддерживаемой темы. Баги в неактивных темах не будут исправляться, что сделает ваше решение временным.

  6. Используйте инструменты для отладки: Используйте инструменты для разработчиков в вашем браузере (обычно можно открыть их при помощи клавиши F12) для анализа элементов меню. Убедитесь, что при рендеринге на клиенте атрибут href генерируется корректно.

  7. Обратитесь в сообщество: Если ни один из вышеуказанных шагов не помогает, возможно, стоит обратиться за помощью на форумах поддержки WordPress или в сообществах разработчиков. Опишите подробно свою проблему и шаги, которые вы уже предприняли.

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

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

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