Страница архива Custom Post Type не отображается

4 мар. 2013 г., 12:41:06
Просмотры: 23.4K
Голосов: 13

У меня есть категория на сайте под названием 'profiles', и я в процессе переноса этой категории в пользовательский тип записей (custom post type) с названием 'profiles'.

Моя проблема в том, что я не могу получить отображение страницы архива для этого пользовательского типа записей. Когда я перехожу по URL mywebsite.com/profiles, он перенаправляет меня на страницу отдельной записи из категории profiles.

Я включил has_archive = true; в мой functions.php

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

Буду признателен за любой совет!

add_action( 'init', 'profile_custom_init' );

/* Вот как создать свои настраиваемые метки */
function profile_custom_init() {
$labels = array(
    'name' => _x( 'Профили', 'общее название типа записи' ), // Совет: _x('') используется для локализации
    'singular_name' => _x( 'Профиль', 'единственное число названия типа записи' ),
    'add_new' => _x( 'Добавить новый', 'Профиль' ),
    'add_new_item' => __( 'Добавить профиль' ),
    'edit_item' => __( 'Редактировать профиль' ),
    'new_item' => __( 'Новый профиль' ),
    'view_item' => __( 'Просмотреть профиль' ),
    'search_items' => __( 'Искать профиль' ),
    'not_found' =>  __( 'Профили не найдены' ),
    'not_found_in_trash' => __( 'В корзине профили не найдены' ),
    'parent_item_colon' => ''
);

// Создаем массив для $args
$args = array( 'labels' => $labels, /* ОБРАТИТЕ ВНИМАНИЕ: здесь используется переменная $labels... */
    'public' => true,
    'publicly_queryable' => true,
    'has_archive' => true,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 10,
    'supports' => array( 'title', 'editor','thumbnail', 'excerpt', 'custom-fields' ),
        'taxonomies' => array('category')
    ); 

    register_post_type( 'profile', $args ); /* Регистрируем его и двигаемся дальше */
}
4
Комментарии

Попробуйте изменить slug категории профиля на что-то другое, например profiles-2.

Vinod Dalvi Vinod Dalvi
4 мар. 2013 г. 12:45:04

Похоже, не работает. Также, если я перейду по URL mywebsite.com/his, например, вместо того чтобы перенаправить меня на страницу 404 (у меня нет страницы или записи с названием просто 'His'), меня перекидывает на запись, начинающуюся со слова 'his'. Это кажется очень странным?

stemie stemie
4 мар. 2013 г. 12:55:29

Вы пробовали снова сохранить структуру постоянных ссылок? Это приводит к перегенерации правил перезаписи.

Mike Madern Mike Madern
4 мар. 2013 г. 13:03:50

Попробуйте пересохранить структуру постоянных ссылок, нажав на кнопку "Сохранить изменения" в настройках постоянных ссылок.

Vinod Dalvi Vinod Dalvi
4 мар. 2013 г. 13:04:42
Все ответы на вопрос 2
3
23
  1. Перейдите в Настройки -> Постоянные ссылки
  2. Измените структуру постоянных ссылок на По умолчанию
  3. Сохраните настройки
  4. Измените на пользовательскую структуру или имя записи (или любую другую структуру)
  5. Сохраните настройки

Это перезапишет файл htaccess, и перезапись должна заработать.


Если приведенное выше решение не работает - это может быть связано с настройкой сервера.

Apache2

Выполните: a2enmod rewrite && service apache2 reload

Nginx

Следуйте инструкциям: https://do.co/2LjCF8r


Надеюсь, это сэкономит ваше время.

3 окт. 2013 г. 09:23:14
Комментарии

Это решило мою проблему.

HippoDuck HippoDuck
4 сент. 2019 г. 18:12:51

Классический flush_rewrite_rules, всегда про него забываю :)

Danyl Filatov Danyl Filatov
11 апр. 2022 г. 18:10:25

Варианты 1-5 сработали у меня

breadwild breadwild
13 сент. 2022 г. 22:33:51
3

Повторное сохранение структуры постоянных ссылок, похоже, решило проблему. Спасибо за совет, Майк и Винод.

5 мар. 2013 г. 10:08:50
Комментарии

Я ответил на этот вопрос раньше Нихила и подумал, что это будет полезно. Я не проверял с тех пор, как он опубликовал лучший ответ. Поэтому немного несправедливо обвинять меня в том, что я не отдал должное людям, которые дали ответ.

stemie stemie
21 мая 2018 г. 19:31:00

моя вина, я увидел март после октября и подумал, что это следующий год.. ваш краткий ответ в сочетании с этим выглядел как быстрая попытка присвоить заслуги.. мне следовало посмотреть внимательнее (сортировка по количеству голосов тоже не помогает при беглом просмотре), поставил вам плюс и на вопрос, и на ответ

Kender Kender
22 мая 2018 г. 20:27:30

@Kender - У меня не было намерения присваивать заслуги чужого ответа или копировать его. Я ответил, исходя из своего опыта, и подробно объяснил ответ. Это может помочь многим разработчикам решить проблему как со стороны CMS, так и со стороны сервера.

Nikhil Nikhil
15 мар. 2019 г. 11:31:31