Могут ли несколько пользовательских типов сообщений использовать одну и ту же таксономию?

23

Я подумываю о перестройке сайта drupal в WordPress и все еще думаю о различиях между системами - в частности, о cck / fields и пользовательских типах контента, а также о различных способах использования таксономии.

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

Если не учитывать пользовательский аспект, который представляется возможным с помощью роллеров, можете ли вы сделать это с помощью WordPress? Я видел только пользовательский тип контента с пользовательской таксономией, но нет способа разделить данную таксономию между 2 или более пользовательскими типами контента, не воссоздавая его в двух местах или не включив его глобально через категории / теги ...

Спасибо, Чед.

Чад Дюпюи
источник

Ответы:

15

Распределение таксономии между CPT

Я хотел бы знать, могут ли два пользовательских типа контента использовать одну пользовательскую таксономию.

Просто сказал: да, они могут .

Как поделиться

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

Оберните ваш процесс регистрации в функцию, подключенную к initкрючку с приоритетом по умолчанию.

register_taxonomy(
    'some_custom_tax',
    'some_post_type',
    $array_of_arguments
);
register_post_type(
    'some_post_type',
    [
        'taxonomies' => [ 'some_custom_tax' ],
        // other arguments
    ]
);

Не имеет значения, используете ли вы 2- й аргумент для register_taxonomy()или если вы используете register_taxonomy_for_object_type(), так как оба делают одно и то же: они берут $GLOBALS['wp_taxonomies']массив и присваивают ему объект типа post (тип).

Важная заметка

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

кайзер
источник
2
Одна проблема, которую я обнаружил, заключается в том, что администратор неправильно отображает количество сообщений для CPT, если общий CT используется в другом месте.
Meetai.com
Я не уверен, если я последую. Вопрос задает вопрос о регистрации CT для нескольких CPT. Этот ответ выглядит так, как будто он регистрирует CPT и CT друг с другом в обоих направлениях.
Этот бразильский парень
4

Из Кодекса:

таксономиями

(массив) (необязательно) Массив зарегистрированных таксономий, таких как category или post_tag, который будет использоваться с этим типом записи. Это может быть использовано вместо вызова register_taxonomy_for_object_type()напрямую. Пользовательские таксономии все еще должны быть зарегистрированы в register_taxonomy().

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

Вы можете назначить таксономию на любое количество типов записей. Таксономии не привязаны к конкретному типу постов.

s_ha_dum
источник
4

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

add_action( 'init', 'build_taxonomies', 0 );
 function build_taxonomies() {
    register_taxonomy( 'some_custom_tax', array('some_post_type_1','some_post_type_2'), array( 'hierarchical' => true, 'label' => 'Custom Tax Title', 'query_var' => true, 'rewrite' => true ) );   
}
Кевин Очиенг
источник
Это должен быть принятый ответ ИМО. Кратко и по существу.
FaCE