Ferzet
@Ferzet

Custom post type как изменить url?

Привет всем!
Создал произвольный тип записи:
//Произвольный тип записи
add_action( 'init', 'true_register_products' ); // Использовать функцию только внутри хука init
 
function true_register_products() {
	$labels = array(
		'name' => 'Продукты',
		'singular_name' => 'Продукт', // админ панель Добавить->Функцию
		'add_new' => 'Добавить продукт',
		'add_new_item' => 'Добавить новый продукт', // заголовок тега <title>
		'edit_item' => 'Редактировать продукт',
		'new_item' => 'Новый продукт',
		'all_items' => 'Все продукты',
		'view_item' => 'Просмотр продуктов на сайте',
		'search_items' => 'Искать продукты',
		'not_found' =>  'Продуктов не найдено.',
		'not_found_in_trash' => 'В корзине нет продуктов.',
		'menu_name' => 'Продукты' // ссылка в меню в админке
	);
	$args = array(
		'labels' => $labels,
		'public' => true, // благодаря этому некоторые параметры можно пропустить
		'menu_icon' => 'dashicons-yes', // иконка корзины
		'menu_position' => 5,
		'has_archive' => true,
		'supports' => array( 'title', 'editor', 'excerpt', 'thumbnail', 'comments'),
		'taxonomies' => array('brands')
	);
	register_post_type('product',$args);
}

При добавлении новой записи, url записи получается такого вида:
site.ru/product/super-zapis/
Как мне убрать: product, чтобы url имел вид:
site.ru/super-zapis/
  • Вопрос задан
  • 901 просмотр
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Во-первых, код регистрации CPT у вас сильно упрощен, там есть еще куча нужных параметров. 'has_archive' принимает не только булево значение, но и строку (собственно, как будет выглядеть url base архива). Есть еще важный параметр 'rewrite', который принимает целый массив значений.

В принципе, добиться желаемого вы можете, вручную добавив свое правило rewrite_rule с параметром top, тогда оно будет отрабатываться первым и смотреть именно продукты. Впрочем, надо тестировать, потому что я подозреваю, что в этом случае у вас перестанут работать обычные страницы. А может и нет - никогда не было необходимости так делать.

А вообще, если честно, это очередные пляски без надобности. Контент должен иметь base, по которому система определяет что это за тип данных (post type), а также это полезно и для SEO, плюс, собственно, архив - по адресу /products/ прям очень логично просится. В общем, у вас привычная и стандартная схема, зачем вам ее менять?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы