Skip to main content

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

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

При создании произвольного типа записей, в WordPress автоматически добавляется префикс с его именем в URL, например www.site.ru/prefix/zapis/. Изменить его можно в параметре rewrite. А вот чтобы полностью удалить, можно воспользоваться приведенным в этой статье хаком.

Для начала удаляем параметр rewrite, а лучше устанавливаем его в false в функции создания кастомного типа записи register_post_type(), обычно она находится в файле functions.php вашей темы.

Затем в этом же файле добавляем несколько функций:

function progme_post_type_rewrite() {
	global $wp_rewrite;
	// изменить portfolio на ваш тип записи
	$wp_rewrite->add_rewrite_tag("%portfolio%", '([^/]+)', "portfolio=");
	$wp_rewrite->add_permastruct('portfolio', '%portfolio%' );
}
 
add_action( 'init', 'progme_post_type_rewrite');
function progme_rewrite_conflicts( $request ) {
	if(!is_admin())
		$request['post_type'] = array('portfolio', 'post', 'page'); // вместо portfolio ваш тип записи
	return $request;
}
add_filter( 'request',  'progme_rewrite_conflicts' );

Теперь идем в Настройки → Постоянные ссылки, выбираем Название записи.

Можно попробовать оставить настройки как и были и просто пересохранить. Но были случаи, что без выбора Название записи хак не работал.

В моем случае все заработало, кроме главной страницы, она перестала отображаться. При чем проверки функциями WP is_front_page() и is_home() не срабатывали. Пришлось дописать проверку так $_SERVER['REQUEST_URI'] != '/' В итоге получился следующий код:

function progme_rewrite_conflicts( $request ) {
	if(!is_admin() && $_SERVER['REQUEST_URI'] != '/')
		$request['post_type'] = array('portfolio', 'post', 'page'); // вместо portfolio ваш тип записи
	return $request;
}
add_filter( 'request',  'progme_rewrite_conflicts' );
Похожие записи
Как создать виджет WordPress

Виджеты используются для добавления контента на страницу WordPress без изменения шаблонов тем. Боковая панель является... Читать далее

Оптимизация WordPress

Ваш сайт WordPress может быть медленным по многим различным причинам: забитая база данных, работающая в... Читать далее

Отправка сообщений в Telegram из Contact Form 7

Мы уже рассматривали как отправлять сообщения в телеграмм из обычного PHP скрипта и заказы из... Читать далее

Получить параметры сайта с помощью функции get_bloginfo() WordPress

Сегодня мы поговорим об одной нужной функции WordPress get_bloginfo(), которая возвращает параметры сайта и довольно... Читать далее

Что такое шорткод и как его использовать

Шорткоды - это PHP функции, которые можно вставлять в текст записи, страницы или другой таксономии... Читать далее

Contact Form 7 reCAPTCHA. Установка и настройка

Защитить от спама свои контактные формы на сайте WordPress, созданные в плагине Contact Form 7... Читать далее

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

*

code