Предотвратить автоматическое добавление “http://” в редактор ссылок WordPress.

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

Я работаю над сайтом WordPress, который использует блоки Gutenberg, и у меня есть страница с кастомной статьей, где я хочу позволить пользователям добавлять ссылки к определенному тексту через текстовый редактор WordPress. Проблема, с которой я столкнулся, заключается в том, что когда я использую опцию “Ссылка” в редакторе, он автоматически добавляет “http://” к любому URL, даже если это уже полный URL в пользовательском поле ACF.

Например, у меня есть переменная %%cta%%, приходящая из поля ACF, которая содержит ссылку. Когда я использую редактор ссылок WordPress и выделяю текст для добавления ссылки, он автоматически добавляет “http://”, получая в итоге http://https://example.com, что некорректно.

Я попытался создать дополнительный инструмент и отменить регистрацию core/link инструмента, затем зарегистрировать новый с красивым пользовательским интерфейсом, который добавляет тег анкера к выделенному тексту. Однако есть проблема: у меня слишком много статей, которые нужно обновить после этого.

Можно ли сделать так, чтобы WordPress не добавлял автоматически “http://” при привязке текста, особенно если URL уже имеет протокол (например, https://)? Я пытался найти настройку в редакторе, но не смог ничего обнаружить, что касается этого поведения. Буду признателен за любую помощь!

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

Скриншот WordPress

Вы пробовали отключить все плагины? Я только что протестировал свежую установку WordPress, и всё работает хорошо.

Я использую версию WordPress 6.7.1

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

Вопрос, который вы задали, касается автоматического добавления "http://" в гиперссылки в редакторе WordPress, что может вызвать проблемы, особенно при использовании пользовательских полей ACF с готовыми URL, содержащими другие протоколы, такие как "https://". Давайте разберемся, почему это происходит и как вы можете решить эту проблему.

Теория

Основным двигателем редактора ссылок в WordPress, и в частности в Gutenberg, является стремление обеспечить корректность вводимых данных пользователем. Когда вы вставляете URL-адрес, WordPress пытается стандартизировать его, автоматически добавляя "http://", если другой протокол явно не указан. Это сделано, чтобы пользователь не получал ошибку из-за неверно введенного URL. Однако, как в вашем случае, это может привести к недоразумениям и проблемам.

Когда WordPress встречает данные, такие как переменная из пользовательского поля Advanced Custom Fields (ACF), его алгоритм может ошибочно интерпретировать их как неполные URL и применять свою стандартную обработку, добавляя "http://".

Пример

Рассмотрим пример: у вас имеется переменная %%cta%% из ACF, содержащая ссылку "https://example.com". Когда вы пытаетесь добавить эту ссылку через редактор ссылок в Gutenberg, возможно, происходит автоматическая подстановка "http://", в результате чего окончательный URL получается некорректным: "http://https://example.com".

Применение

Есть несколько способов, как можно решить данную ситуацию:

  1. Проверка и модификация кода ядра WordPress:
    Несмотря на то что изменение кода ядра WordPress является крайним, а также не рекомендуемым решением, вы можете исследовать файлы, отвечающие за обработку и форматирование ссылок. Это обычно затрагивает JavaScript-компоненты редактора Gutenberg. Ищите код, который обрабатывает ввод URL, и уточните проверку наличия протокола.

  2. Использование фильтров и хуков WordPress:
    WordPress предоставляет обширную систему хуков и фильтров, которые могут быть использованы для массового изменения поведения системы. Найдите подходящий хук, который отвечает за фильтрацию или обработку URL, и внесите необходимые изменения.

  3. Создание или использование плагина:
    Возможно, есть плагины, которые уже решают аналогичные вопросы форматирования ссылок. Поиск среди текущих плагинов может привести вас к решению без необходимости в программировании. Если же готового решения нет, можно рассмотреть разработку собственного плагина. Создайте плагин, который подключится к нужным хукам и исправит URL, корректно удалив или заменив "http://", если уже имеется протокол.

  4. Использование JavaScript в темах:
    Если ваша тема поддерживает кастомные скрипты, можно попробовать добавить JavaScript, который будет работать в админ-панели и на этапе ввода, исправляя некорректное добавление "http://". Этот скрипт должен перехватывать событие вставки URL и проверять наличие протокола, чтобы оставить его корректным.

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

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

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

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