Как убрать category из урла в wordpress

Можно колдовать с category base в настройках, но я нашел в интернетах более простой способ, добавив в functions.php пару строк

function seocategorydel($catlink1) {
 $catlink1 = str_replace('/category', '', $catlink1);
 return $catlink1;
}
add_filter('category_link', 'seocategorydel', 1, 1);
3.60 avg. rating (73% score) - 5 votes

81 комментарий

  • 2 Alex Volkov

    Спасибо что отозвались. Но уже вроде решил сам.

  • Любопытно. Надо попробовать этот метод. Правда, этот метод с изменением functions.php, так сказать «железный». Разве с плагином «seo-without-category» не более гибкие возможности?
    Или все-таки принцип: чем меньше плагинов, тем лучше работает движок имеет место быть?

  • Спасибо за статью. Вопрос, а вот если у меня довольно много категорий и они все уже есть в индексе (на некоторых есть PR), я поменяю их урлы, как написано в статье, они пропадут из индекса и пропадёт PR?

  • Спасибо Алекс, оч помог, давно пытался избавиться от category в urlе а плагин лишний ставить неохота. Респект))))

  • ток теперь в титле категорий пишет что такой страницы нет(((

  • Все понятно, мне лично всё понравилось, только вот один минус, сайт слегка подтормаживает у вас, а так всё норм! 😉

  • Все описанное выш понятно. Однако у меня возник другой, насущный вопрос по этой тематике: если на сайте есть категории и подкатегории, то как их удалить в ссылках, чтобы в итоге все выглядело примерно так:
    — для постов: имя_сайта://пост.html (можно и без html);
    — для категорий: имя_сайта://категория/;
    — для подкатегорий: имя_сайта://подкатегория/
    При этом сохранить в ЧПУ структуру типа /%category%/%postname%/
    Хотелось бы обязательно оставить «в живых» /%category%/, поскольку она ряду плагинов, в том числе и по оптимизации, может потребоваться.
    Как разрешить данную ситуацию? Я сегодня искал в Инете ответ, да все какие-то однобокие ответы попадаются: только с удалением слова category, или родителькой директории, или поддиректории. А вот как сделать все и сразу – так и не нашел. Но сайты с подобной эргономичной и удобной для оптимизацией структурой встречаются. Значит можно сделать такое. Не подскажите как?

    • Валерий, ловить урл и править его руками

  • Обьясните пож-ста …я ничего не понимаю по вашим комментариям…что делать

  • Приведенная функция — это и есть плагин Seo-Without-Category. Кто не верит скачайте плагин и посмотрите его код. Единственная разница, что код мы вставляем на страницу руками, а не автоматически с помощью плагина.

  • «…ловить урл и править его руками» — ну это Вы жестко придумали! На самом деле я нашел другое решение, мне раньше никогда не попадалось на глаза — плагины добавления слеша в конце рубрик и подрубрик. Т.е. сперва подключаем плагином окончания html к статьям, затем пишем /%category%/%postname%.html, затем обрезаем плагинами структуру до нужного вида, а затем хлоп — плагин слеш в конце рубрик. Вот это я понимаю, это по-нашему… А Вы «ловить руками»… Издеваетесь? 🙁

    • Valeriy, блин, круто вообще ))

  • Добр времени суток. Что — то не получается у меня с кодом. Вставляю — пропадает сайт вообще. Просто отображается пустая страница.
    Может подскажите что я делаю не так?

  • function seocategorydel($catlink1) {
    return(str_replace(‘/category’, », $catlink1));
    }
    add_filter(‘category_link’, ‘seocategorydel’, 1, 1);

    В конец файла /wp-includes/plugin.php, перед «?>». WordPress 3.1.1, PHP 5.3 работает.

  • Для этого воспользовался плагином «WP No Category Base»

  • Ха ха просто в Category base поставьте точку!»

  • Доброго времени суток. Ввел этот код в functions.php. Перестала работать пагинация. я захожу в какую-нибудь рубрику, где выведены посты. Там у меня пагинация. Нажимаю на «Следующая страница», мне выдает ошибку 404. Если до следующей страницы прописать путь через /category/ то тогда все работает. Как сделать так, чтобы данный метод работал с пагинацией без /category/

    Кто-то задавал уже этот вопрос и решил его. А вот ответа не сказали ((

    • Я бы посоветовал в данный момент использовать плагин, не помню только как называется, думаю что-то типа remove category plugin в гугле надо вбить. Потому как есть проблемка с пагинацией, я ее решал в свое время, но сейчас уже не помню как ((

  • Дарова перцы:))) Читал, пробовал то, что вы предлагаете, но действительно меню категорий не работает если вставить код. Оказалось, выход очень простой. Есть плагин WP No Category Base. Как он это все мутит — понятия не имею, но слово «категориес» в урле исчезло а линки категорий начали работать))). Вы спрашивали зачем убирать это слово — да потому, что на миралинксе понаставил статей со ссылками на категории, потом пришлось перезалить сайт заново и сменить шаблон, и нужно их урлы вернуть в тот же вид, как и раньше было, до переустановки сайта. Удачи, спасибо за ваши советы!

css.php