Wordpress: разрешить подчеркивание в слизне - PullRequest
1 голос
/ 26 февраля 2020

Проблема

Мне нужно, чтобы 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 );

В целях тестирования я удалил подчеркивание из этой строки, заменил форматирование. php на сервере и попытался снова вставить подчеркивание в слаг. Но это ничего не сделало. Я также только что выяснил, основываясь на ссылке «разрешить точки в постоянных ссылках», упомянутой ранее, которую эта строка предположительно ПОЗВОЛЯЕТ подчеркивать в URL.

Это также соответствует содержанию комментария "* Ограничивает вывод alphanumeri c символами, подчеркиванием (_) и da sh (-)."

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

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

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

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

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

В моем случае, Я включил плагин Classi c Editor: https://wordpress.org/plugins/classic-editor/

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

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


В это время редактор Гутенберга вводит дефисы в кусок сообщения или страницы: https://github.com/WordPress/gutenberg/issues/13091

В моем случае я включил Classi c Плагин редактора: https://wordpress.org/plugins/classic-editor/

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

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

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

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

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

1 голос
/ 27 февраля 2020

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

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

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

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

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


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

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

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

...