Пользовательский тип записи (CPT) перенаправляет на главную страницу

24 авг. 2016 г., 00:09:56
Просмотры: 16.4K
Голосов: 2

У меня зарегистрирован пользовательский тип записи под названием employees. При регистрации этого типа записи я использовал:

...
'rewrite' => array('slug' => 'people'),
...

Теперь, когда я навожу курсор на ссылку одного из сотрудников, я вижу URL в таком виде:

www.example.com/people/john

Это выглядит правильно. Но когда я кликаю по ссылке, Chrome переходит просто на www.example.com/john, и так как такой страницы не существует, происходит перенаправление на www.example.com (главную страницу).

Как сделать так, чтобы переход осуществлялся на /people/john и остановить перенаправление на главную страницу?

0
Все ответы на вопрос 3
2
14

Наиболее важные аргументы для перезаписи редиректов при регистрации нового типа записи:

  • '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 );
24 авг. 2016 г. 01:08:58
Комментарии

Спасибо за помощь. Проблема была именно в public_queryable. У меня было значение false, и это перенаправляло трафик. Спасибо,

Jake Wilson Jake Wilson
24 авг. 2016 г. 19:51:11

У меня тоже была проблема с public_queryable. Спасибо!

Gavin Gavin
10 апр. 2017 г. 14:45:12
1

Если вы зарегистрировали свой тип записи с помощью
register_post_type('employees',$args);

Вы создали файл single-employees.php?

После этого в админке: Настройки / Постоянные ссылки → Сохранить изменения

24 авг. 2016 г. 00:18:17
Комментарии

Пересохранение постоянных ссылок решило мою проблему. Спасибо

fanta fanta
7 дек. 2016 г. 18:39:11
2

У меня была такая же проблема - ссылка на пользовательскую таксономию перенаправляла на главную страницу.

Итак, при регистрации пользовательской таксономии убедитесь, что код 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); 
}
2 апр. 2019 г. 22:19:22
Комментарии

Это хороший вопрос. Можете привести пример кода, как это реализовать?

MikeNGarrett MikeNGarrett
3 апр. 2019 г. 05:01:33

Только что добавил.

Nikos Nikos
4 апр. 2019 г. 00:09:58