Пользовательский тип записи (CPT) перенаправляет на главную страницу
У меня зарегистрирован пользовательский тип записи под названием employees
. При регистрации этого типа записи я использовал:
...
'rewrite' => array('slug' => 'people'),
...
Теперь, когда я навожу курсор на ссылку одного из сотрудников, я вижу URL в таком виде:
www.example.com/people/john
Это выглядит правильно. Но когда я кликаю по ссылке, Chrome переходит просто на www.example.com/john
, и так как такой страницы не существует, происходит перенаправление на www.example.com
(главную страницу).
Как сделать так, чтобы переход осуществлялся на /people/john
и остановить перенаправление на главную страницу?

Наиболее важные аргументы для перезаписи редиректов при регистрации нового типа записи:
- 'public' => true,
- 'publicly_queryable' => true,
- 'query_var' => true,
Ниже приведен код, который я протестировал, и он корректно работает для URL: www.example.com/people/john
$labels_employee =
array('name' => _x( 'Сотрудники', 'Общее название типа записи', 'textdomain' ),
'singular_name' => _x( 'Сотрудник', 'Название типа записи в единственном числе', 'textdomain' ),
'menu_name' => _x( 'Сотрудники', 'Текст в меню админки', 'textdomain' ),
'name_admin_bar' => _x( 'Сотрудник', 'Текст "Добавить новый" в тулбаре', 'textdomain' ),
'add_new' => __( 'Добавить нового', 'textdomain' ),
'add_new_item' => __( 'Добавить нового сотрудника', 'textdomain' ),
'new_item' => __( 'Новый сотрудник', 'textdomain' ),
$args_employee= array(
'labels' => $labels_employee,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'people' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
);
register_post_type( 'employee', $args_employee );

У меня была такая же проблема - ссылка на пользовательскую таксономию перенаправляла на главную страницу.
Итак, при регистрации пользовательской таксономии убедитесь, что код register_taxonomy выполняется всегда (хук init), а не только в админке (admin_init).
add_action('init', 'woobr_register_settings');
function woobr_register_settings()
{
$args = array(
//'labels' => $labels,
//'labels' => 'Бренд',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'capability_type' => 'product',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments'),
);
register_taxonomy('woobrand', 'product', $args);
}
