Слаг пользовательского типа записи как слаг страницы

Вопрос или проблема

У меня есть пользовательский тип страницы dictionary, и все элементы словаря имеют URL, подобный этому: example.com/dictionary/item

у словаря has_archive => false

Проблема возникает, если я также создаю страницу с названием Словарь с URL example.com/dictionary

Теперь все страницы элементов словаря выдают ошибку 404.

Пользовательский тип записи был создан с помощью CPT UI


Итак, мой вопрос: как сделать так, чтобы example.com/dictionary отображал страницу под названием “Словарь” (а не архив) и чтобы все элементы отображались по своим URL, пример: example.com/dictionary/item-1, а не показывали ошибку 404.

Я обновил постоянные ссылки, перейдя в настройки -> постоянные ссылки и нажав сохранить.

Сбросьте свои постоянные ссылки. Перейдите в настройки / постоянные ссылки и нажмите сохранить.

Есть еще один момент, который возможен. Когда вы регистрируете пользовательский тип записи, вы можете использовать дополнительный аргумент rewrite with_front:

$args = array(
    // ( ... ваши аргументы здесь ... )
    'rewrite' => array(
        'slug' => 'dictionary',
        'with_front' => false // обратите внимание здесь
    ),
    // ( ... больше аргументов здесь ... )

Это удалит базу CPT (dictionary в вашем случае) из URL.

И не забудьте сбросить постоянные ссылки каждый раз, когда вы меняете код, относящийся к ним.

Смотрите rewrite в Codex.

Ответ или решение

Чтобы решить проблему с конфликтом между созданным вами пользовательским типом записи (Custom Post Type, CPT) с именем "dictionary" и страницей с тем же именем в WordPress, необходимо внести несколько изменений в настройки вашего CPT. Следуйте приведённой ниже инструкции для настройки и устранения ошибки 404 для ваших элементов "dictionary".

Шаги по решению проблемы

  1. Изменение настроек при регистрации CPT:
    При создании пользовательского типа записи убедитесь, что вы используете параметр rewrite с настройкой with_front => false. Это уберет базу CPT из URL, позволяя вашему контенту существовать в одной и той же пространственной области, что предотвратит ошибку 404.

    Пример кода для регистрации вашего CPT может выглядеть так:

    function my_custom_post_type() {
       $args = array(
           'label'               => 'Dictionary',
           'public'              => true,
           'has_archive'         => false,
           'rewrite'             => array(
               'slug'       => 'dictionary',
               'with_front' => false
           ),
           // Другие параметры
       );
    
       register_post_type('dictionary', $args);
    }
    add_action('init', 'my_custom_post_type');
  2. Создание страницы "Dictionary":
    После того как вы зарегистрируете свой CPT с новым параметром rewrite, создайте страницу с тем же именем "Dictionary". Она будет доступна по URL example.com/dictionary.

  3. Флоша пермалинков:
    Каждый раз, когда вы вносите изменения в структуру ваших постов или изменяете настройки пермалинков, важно обновить их. Для этого перейдите в админ-панель WordPress, в раздел Настройки → Постоянные ссылки и нажмите кнопку "Сохранить изменения". Это обновит ваши правила пермалинков и устранит возможные проблемы с ошибками 404.

  4. Проверка результата:
    После выполнения вышеуказанных шагов проверьте, что URL для ваших элементов dictionary выглядят как example.com/dictionary/item-1 и не вызывают ошибки 404. В этом случае:

    • example.com/dictionary будет отображать вашу страницу "Dictionary".
    • Каждый отдельный элемент будет доступен по своему уникальному URL без возникновения конфликтов.

Заключение

С помощью вышеуказанных шагов вы сможете эффективно справиться с конфликтом между пользовательскими типами записей и обычными страницами в WordPress, а также оптимизировать структуру URL. Убедитесь, что сохраняете актуальные настройки и периодически проверяете работоспособность ваших ссылок. Это поможет улучшить пользовательский опыт и SEO-позиции вашего сайта.

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

Капча загружается...