Как удалить префикс (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, который подойдет для всех поисковиков. Этот вариант использую на данном сайте. Не забудьте заменить maindot.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://maindot.ru/wordpress/kak-udalit-prefiks/slug-iz-url/proizvolnyh-tipov-zapisej/

  4. Алексей:

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

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