Проблема
Мне нужно, чтобы 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.
Я вставил сюда код, связанный с очисткой:
Единственная строка, которую я вижу, что цели подчеркивают:
$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 будет изменен, чтобы избежать путаницы, если разработчики намерены разрешить пользователям использовать только дефисы.