Как удалить префикс (slug) из URL у произвольных типов записей

Как удалить префикс (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 Читать далее

WordPress подгрузка постов кнопкой показать еще или бесконечным скроллом

Кнопка "Показать ещё" и бесконечный скроллинг - это по сути постраничная навигация, которая подгружает следующую страницу с постами без перезагрузки страницы. Подобные примеры часто можно встретить в лентах соц. сетей. В этом примере показана реализация кнопки "Показать ещё" и бесконечного Читать далее

4 комментария на «Как удалить префикс (slug) из URL у произвольных типов записей»

  1. лев:

    не сработало

  2. Антон:

    Должно работать. На этом сайте так сделано. Попробуйте сделать еще раз все по инструкции.

  3. Александр:

    Не работает, если дочерних категорий больше 1.
    Например:
    https://it-blog.ru/wordpress/kak-udalit-prefiks/slug-iz-url/proizvolnyh-tipov-zapisej/

  4. Алексей:

    Всё круто работает, спасибо! Но не работает пагинация.
    То есть, у меня тип данных uslugi, её посты открываются по своему slug без /uslugi/ в урле. И сама страница /uslugi/ тоже работает. Но /uslugi/page/2/ делает 301 на /uslugi/. Подскажите, пожалуйста, как от этого избавиться?

Добавить комментарий