Wordpress: разрешить подчеркивание в слаге

Проблема

Мне нужно, чтобы Wordpress перестал превращать символы подчеркивания в дефисы в своих слагах/постоянных ссылках.

Ситуация

Перенос старого сайта на чистую установку Wordpress. Старый сайт использует символы подчеркивания в своих URL-адресах. В настоящее время нам нужно сохранить старые URL-адреса, включая символы подчеркивания (пожалуйста, не рекомендуйте здесь какие-либо советы по SEO, спасибо).

Wordpress очищает свои слаги/постоянные ссылки. Подчеркивания превращаются в дефисы.

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

Примеры решения, которое не соответствует моим критериям:

https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore-in-permalinks

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

https://wordpress.stackexchange.com/questions/231448/how-to-add-dot-in-post-slug

Что я пробовал

Я искал решение, но не смог найти удовлетворительного. Предположительно очистка слагов/постоянных ссылок определена в /wp-includes/formatting.php с помощью функции sanitize_title_with_dashes.

Я вставил сюда код, связанный с очисткой:

https://pastebin.com/jRqV8iB8

Единственная строка, которую я вижу, что цели подчеркивают:

$title = preg_replace( '/[^%a-z0-9 _-]/', '', $title );

В целях тестирования я удалил подчеркивание из этой строки, заменил formatting.php на сервере и снова попытался добавить подчеркивание в слаг. Но это ничего не сделало. Я также только что понял, основываясь на упомянутой ранее ссылке «разрешить точки в постоянных ссылках», что эта строка якобы РАЗРЕШАЕТ подчеркивание в URL-адресах.

Это также соответствует содержимому комментария «* Ограничивает вывод буквенно-цифровыми символами, подчеркиванием (_) и тире (-)».

Итак... этот код говорит, что символы подчеркивания разрешены (в слагах/постоянных ссылках?), но они все еще удаляются в моем слаге/постоянной ссылке.

Может ли кто-нибудь увидеть здесь что-то, чего я не могу. Или предложите фильтр, который позволит использовать как символы подчеркивания, так и дефисы в слаге/постоянной ссылке? Прямо сейчас я застрял.

Заранее благодарим вас за любую помощь, которую вы готовы предложить.

Решение найдено

Редактор Gutenberg в настоящее время принудительно ставит дефисы в слаге поста или страницы: https://github.com/WordPress/gutenberg/issues/13091

В моем случае я включил подключаемый модуль Classic Editor: https://wordpress.org/plugins/classic-editor/

Таким образом я восстановлю веб-сайт и старые URL-адреса с подчеркиванием. Когда я закончу, я вернусь к Гутенбергу. В будущем старые URL-адреса будут изменяться осторожно и постепенно, а в новых будут использоваться дефисы. Так что должно получиться.

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

Если вы хотите навсегда заменить дефисы символами подчеркивания, создайте фильтр, используя вместо этого решение, представленное для этого вопроса: https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore.-in-permalinks

Спасибо тем, кто нашел время ответить (один пользователь удалил свой ответ или удалил его). Я надеюсь, что другие найдут это решение через Google в будущем.

Будем надеяться, что либо Gutenberg будет исправлен, либо комментарий в файле formatting.php будет изменен, чтобы избежать путаницы, если разработчики намерены разрешить пользователям использовать только дефисы.


person tfmwa    schedule 26.02.2020    source источник


Ответы (2)


У нас не должно возникнуть проблем с использованием дефисов и тире в WordPress.

URL-слаг test_page-of-awesome абсолютно действителен. Итак, я предполагаю, что где-то в плагине или теме должен быть параметр, который переписывает или изменяет их.

Вы упоминаете, что:

Wordpress очищает свои слаги/постоянные ссылки. Подчеркивания превращаются в дефисы.

... Это неожиданное поведение WordPress и вызвано плагином, темой или чем-то еще... Но ожидается, что WordPress будет работать не так.


Попробуйте следующее:

  • включить основную тему ( twentyninteteen, twentytwenty )
  • отключение всех плагинов
  • убедитесь, что вы можете использовать красивые постоянные ссылки wp-admin/wp-admin/options-permalink.php Настройки >> Постоянные ссылки

и если вы не можете сохранить слаги URL-адресов, проблема, вероятно, исходит из другого места на вашем сервере. В зависимости от конфигурации вашей среды веб-хостинга может быть что-то еще, влияющее на слаги URL. Это могут быть правила apache mod_rewrite или что-то в этом роде.

person admcfajn    schedule 27.02.2020
comment
Спасибо за ответ! Тема 2020 с отключенными плагинами: без кубиков. Пробовал другой сайт на другом хостинге, та же проблема. Но оба использовали Гутенберга. Затем я нашел: github.com/WordPress/gutenberg/issues/13091 Я установил Плагин классического редактора и повторил попытку. Никаких проблем, и слаг был успешно сохранен с использованием символов подчеркивания (или комбинации с дефисами). Ваш ответ помог мне в дальнейшем расследовании. В моем случае я буду использовать классический редактор, чтобы воссоздать старые URL-адреса и переключиться на Гутенберг, когда закончу. Надеюсь, это поможет другим в будущем. - person tfmwa; 28.02.2020
comment
Фантастика! Когда я тестировал это, я тестировал с помощью Гутенберга... Но я также редактировал URL-слаг из режима быстрого редактирования страницы wp-admin со всеми сообщениями. Я не смог найти хороший способ редактировать слаг через страницу постредактирования. Вам разрешено отвечать на свои вопросы, возможно, вам следует опубликовать свои выводы в качестве ответа и принять их? - person admcfajn; 28.02.2020
comment
О да. Вам нужно навести курсор мыши и/или щелкнуть в пустом месте чуть выше заголовка поста/страницы на экране редактирования. Еще одна особенность Гутенберга, вызывающая некоторое обсуждение. :) Мне нужно немного подождать, чтобы принять свой собственный ответ. В любом случае, я надеюсь, что это поможет некоторым людям. Вы помогли мне выйти из затруднительного положения, потратив время на ответ и подтвердив, что символы подчеркивания должны быть возможны. Большое Вам спасибо. - person tfmwa; 28.02.2020

Я также обновляю свой исходный пост, но добавляю принятый ответ для наглядности.


Редактор Gutenberg в настоящее время принудительно ставит дефисы в слаге поста или страницы: https://github.com/WordPress/gutenberg/issues/13091

В моем случае я включил подключаемый модуль Classic Editor: https://wordpress.org/plugins/classic-editor/

Таким образом я восстановлю веб-сайт и старые URL-адреса с подчеркиванием. Когда я закончу, я вернусь к Гутенбергу. В будущем старые URL-адреса будут изменяться осторожно и постепенно, а в новых будут использоваться дефисы. Так что должно получиться.

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

Если вы хотите навсегда заменить дефисы символами подчеркивания, создайте фильтр, используя вместо этого решение, представленное для этого вопроса: https://wordpress.stackexchange.com/questions/78334/convert-hyphen-to-underscore.-in-permalinks

Спасибо тем, кто нашел время ответить (один пользователь удалил свой ответ или удалил его). Я надеюсь, что другие найдут это решение через Google в будущем.

Будем надеяться, что либо Gutenberg будет исправлен, либо комментарий в файле formatting.php будет изменен, чтобы избежать путаницы, если разработчики намерены разрешить пользователям использовать только дефисы.

person tfmwa    schedule 28.02.2020