Продублировать тип пользовательского поста и слаг таксономии

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

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

Совсем просто, мне нужна следующая структура URL:

site.com/dining (пользовательский тип записи)

site.com/dining/restaurants (термины пользовательской таксономии)

site.com/dining/specific-location (конкретная запись пользовательского типа записи)

Эта структура URL будет повторяться для нескольких пользовательских типов записи, таких как размещение (термины отелей, гостиниц, B&B, курортов и т.д.), бары и т.д. Моя текущая настройка:

Пользовательский тип записи: “Dining”
Пользовательская таксономия: “Dining Types”
Термины “Dining Types” – это категории, такие как кафе, рестораны и т.д.

Я переписал URL для термина, чтобы сделать его “dining” вместо “dining_types”, но это привело к конфликту с пользовательским типом записи, как я читал, что и должно произойти. Так что вопрос, с этой очень простой структурой, как мне добиться URL, указанных выше? Мне кажется, это невероятно простая структура (особенно по сравнению с другими похожими проблемами, которые я видел), но я не могу этого достичь.

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

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

http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/

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

Дублирование слогов для пользовательского типа записей и таксономии в WordPress

Понимание того, как правильно настроить пользовательские типы записей и таксономии в WordPress, является важной частью для достижения желаемой структуры URL на вашем сайте. В вашем случае у вас возникла проблема с конфликтами слогов между пользовательским типом записей "Dining" и таксономией "Dining Types". Давайте подробно разберем, как устранить эти конфликты и создать желаемую структуру URL.

Требуемая структура URL

  1. site.com/dining — Пользовательский тип записи (Custom Post Type).
  2. site.com/dining/restaurants — Айти-термин таксономии (Term of Custom Taxonomy).
  3. site.com/dining/specific-location — Конкретная запись пользовательского типа (Actual post of the Custom Post Type).

Программная настройка пользовательского типа записей и таксономий

Для достижения вашей цели, вам необходимо выполнить следующие шаги:

  1. Регистрация пользовательского типа записи (CPT):
    Вам нужно зарегистрировать пользовательский тип записи "Dining" с правильной настройкой параметров перезаписи (rewrite).

    function create_custom_post_type() {
       register_post_type('dining',
           array(
               'labels'      => array(
                   'name'          => __('Dining'),
                   'singular_name' => __('Dining'),
               ),
               'public'      => true,
               'rewrite'     => array('slug' => 'dining'),
               'has_archive' => true,
               'supports'    => array('title', 'editor', 'thumbnail'),
           )
       );
    }
    add_action('init', 'create_custom_post_type');
  2. Регистрация таксономии:
    После этого необходимо создать таксономию "Dining Types" с тем же слогом и убедиться, что она следует за пользовательским типом записи.

    function create_custom_taxonomy() {
       register_taxonomy('dining_types', 'dining', array(
           'labels' => array(
               'name' => __('Dining Types'),
               'singular_name' => __('Dining Type'),
           ),
           'rewrite' => array('slug' => 'dining', 'with_front' => false),
           'hierarchical' => true, // В случае, если это иерархическая таксономия
       ));
    }
    add_action('init', 'create_custom_taxonomy');
  3. Обновление постоянных ссылок:
    Не забудьте обновить настройки постоянных ссылок в админке WordPress, перейдя в Настройки > Постоянные ссылки и просто нажав Сохранить изменения. Это поможет WordPress сгенерировать новые правила перезаписи для вашего пользовательского типа и таксономии.

Избежание конфликтов слогов с другими CPT

Если вы планируете добавить другие пользовательские типы записей, такие как "Lodging" или "Bars", вам следует следовать той же логике: создавайте каждый CPT и соответствующую таксономию с уникальными слогами, чтобы избежать конфликтов. Например:

  • Для «Lodging»:

    • Слог CPT: lodging
    • Слог таксономии: lodging-types
  • Для «Bars»:

    • Слог CPT: bars
    • Слог таксономии: bar-types

Это гарантирует, что структура URL каждого типа не будет пересекаться, и вы сможете сохранить необходимую структуру URL.

Заключение

Ваша цель по созданию структуры URL в виде site.com/dining, site.com/dining/restaurants и site.com/dining/specific-location вполне достижима с помощью правильной настройки пользовательских типов и таксономий. Главное — следить за уникальностью слогов и корректно настраивать постоянные ссылки после изменений. Надеюсь, это руководство помогло вам понять, как достигнуть желаемой структуры URL.

Если у вас есть дополнительные вопросы или нужна помощь, не стесняйтесь обращаться за помощью!

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

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