Думаю многие знают, как превратить ссылки в WordPress из /?p=1
в /категория/пост
(это делается в админке в Настройки > Постоянные ссылки).
Однако первое, что бросается в глаза, это довольно странные URL у рубрик, вот такие /префикс-рубрики/рубрика
(например /category/wordpress
). Я не понимаю, для чего тут нужен префикс для рубрик, ведь:
Короче говоря, нам нужно избавиться от префикса.
Возможно у вас возникнет вопрос — если у префикса категорий столько минусов, то зачем его вообще предусмотрели в WordPress? Ответ — чтобы отличать от меток. У меток, как и у категорий тоже есть префикс (по умолчанию — tag). И, если из URL рубрик мы ещё можем удалить category, то из URL меток это делать ни к чему.
В новых версиях WordPress это делается легко и просто — через файл .htaccess
. Дело в том, что каждая наша рубрика доступна по двум URL — с префиксом и без. Тогда давайте поставим 301 редирект, этим мы сразу убьем двух зайцев:
Прежде всего убедитесь, что настройки постоянных ссылок у вас выглядят примерно вот так:
Если в качестве префикса для рубрик у вас используется какое-либо другое слово, то есть не category, то обязательно верните префиксу значение по умолчанию (category), либо вообще оставьте поле пустым (как на скриншоте).
Затем вставьте этот код (предварительно заменив URL на URL своего сайта) в файл .htaccess
, который находится непосредственно в папке с сайтом:
<IfModule mod_rewrite.c> RedirectMatch 301 /category/(.*) https://misha.agency/$1 </IfModule>
Относительно mod_rewrite не волнуйтесь, после обновления настроек постоянных ссылок он уже автоматически будет включён.
Избавляемся от «category» в старых версиях WordPress (до 3.4)
Тут стандартными средствами удалить префикс из URL не получится, можно изменить лишь слово, которое используется в качестве префикса, если оставить поле пустым то, заюзается слово category.
Ещё я натыкался на пару предназначенных для этого плагинов в интернете, но все они были косячные, после их установки стали пропадать страницы. Выкладываю решение, которое стояло на моем блоге (когда версия WordPress была ниже 3.4).
Итак, всего два шага и всё будет готово!
Первый шаг — хук для functions.php
Скопируйте этот код и вставьте его в файл functions.php
вашей темы:
function true_remove_category_from_category($cat_url) { $cat_url = str_replace('/category', '', $cat_url); return $cat_url; } add_filter('category_link', 'true_remove_category_from_category', 1, 1);
Шаг второй — обновляем настройки постоянных ссылок в админке
Изменяем в настройках структуру постоянных ссылок на произвольную и вписываем туда что-то типа /%category%/%postname%.html
или /%category%/%postname%.htm
.
В общем после точки можно прописать любое расширение, главное не ошибиться в остальном, например если не дописать расширение вообще, то у вас пропадут страницы из рубрик, а точнее их содержимое.
Список плагинов
Для тех, кто не любит копаться в коде и для решения каждой задачи старается подобрать подходящий плагин, вот список плагинов, позволяющих удалить префикс рубрик из URL:
Каждый из этих плагинов доступен в официальном репозитории плагинов WordPress, а значит, устанавливается через админку сайта.