Как удалить префикс (slug) из URL у произвольных типов записей
3 февраля 2020 WordPress
При создании произвольного типа записей, в WordPress автоматически добавляется префикс с его именем в URL, например www.site.ru/prefix/zapis/
. Изменить его можно в параметре rewrite
. А вот чтобы полностью удалить, можно воспользоваться приведенным в этой статье хаком.
Для начала удаляем параметр rewrite
, а лучше устанавливаем его в false
в функции создания кастомного типа записи register_post_type()
, обычно она находится в файле functions.php вашей темы.
Затем в этом же файле добавляем несколько функций:
function it-blog_post_type_rewrite() {
global $wp_rewrite;
// изменить portfolio на ваш тип записи
$wp_rewrite->add_rewrite_tag("%portfolio%", '([^/]+)', "portfolio=");
$wp_rewrite->add_permastruct('portfolio', '%portfolio%' );
}
add_action( 'init', 'it-blog_post_type_rewrite');
function it-blog_rewrite_conflicts( $request ) {
if(!is_admin())
$request['post_type'] = array('portfolio', 'post', 'page'); // вместо portfolio ваш тип записи
return $request;
}
add_filter( 'request', 'it-blog_rewrite_conflicts' );
Так же вам может помочь справочник php
Теперь идем в Настройки → Постоянные ссылки, выбираем Название записи.
Можно попробовать оставить настройки как и были и просто пересохранить. Но были случаи, что без выбора Название записи хак не работал.
В моем случае все заработало, кроме главной страницы, она перестала отображаться. При чем проверки функциями WP is_front_page()
и is_home()
не срабатывали. Пришлось дописать проверку так $_SERVER['REQUEST_URI'] != '/'
В итоге получился следующий код:
function it-blog_rewrite_conflicts( $request ) {
if(!is_admin() && $_SERVER['REQUEST_URI'] != '/')
$request['post_type'] = array('portfolio', 'post', 'page'); // вместо portfolio ваш тип записи
return $request;
}
add_filter( 'request', 'it-blog_rewrite_conflicts' );
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Поделиться:
Остались вопросы по статье? Задайте их
прямо сейчас! Перенос сайта на WordPress на другой домен В повседневной работе часто приходится сталкиваться с переносом сайта на Wordpress с локального или тестового домена на основной. Для этого необходимо не только скопировать файлы, базу данных и поменять настройки в конфигурационном файле, но и сделать ряд SQL-запросов, чтобы прописать Читать далее
Правильный файл robots.txt для WordPress 2019 Самый оптимальный и простой код файла robots.txt для вашего сайта на WordPress, который подойдет для всех поисковиков. Этот вариант использую на данном сайте. Не забудьте заменить it-blog.ru на адрес вашего сайта. Содержание файла robots.txt для WordPress Если вы используете HTTPS, Читать далее
Произвольные типы записей WordPress Произвольные типы записей позволяют разделить посты не только по категориям, но и по их типу с собственными названиями и рубриками. Это что-то типо инфоблока, как в CMS 1С-Битрикс. По умолчанию в WordPress есть возможность добавлять записи и их рубрики. К Читать далее
Произвольные поля WordPress Произвольные поля или как их еще называют кастомные или доп. поля в WordPress очень нужная вещь, особенно при создании например сайта-каталога. С помощью доп. полей можно добавить к записям возможность указывать например цену или цвет, а затем выводить сохраненное значение Читать далее
Создание плагина WordPress с нуля Когда я создавал свой первый плагин, то оказалось, что в сети очень мало информации по этому вопросу. С трудом удалось найти даже основы. Надеюсь эта статья поможет вам научиться писать различные плагины для WordPress. Наверняка вы уже пользовались и знаете, Читать далее
WordPress Ajax По большей части публикации про применение Ajax в WordPress сложные для понимания, особенно если вы мало знакомы с этой технологией. В этой статье я покажу, как на самом деле просто использовать Ajax в публичной части сайта. Ajax запросы в WordPress Читать далее
не сработало
Должно работать. На этом сайте так сделано. Попробуйте сделать еще раз все по инструкции.
Не работает, если дочерних категорий больше 1.
Например:
https://it-blog.ru/wordpress/kak-udalit-prefiks/slug-iz-url/proizvolnyh-tipov-zapisej/
Всё круто работает, спасибо! Но не работает пагинация.
То есть, у меня тип данных uslugi, её посты открываются по своему slug без /uslugi/ в урле. И сама страница /uslugi/ тоже работает. Но /uslugi/page/2/ делает 301 на /uslugi/. Подскажите, пожалуйста, как от этого избавиться?