Plusieurs types de publication personnalisés peuvent-ils partager une taxonomie personnalisée?

23

J'envisage de reconstruire un site drupal en wordpress et j'enveloppe toujours ma tête autour des différences entre les systèmes - en particulier cck / fields et les types de contenu personnalisés et les différentes façons d'utiliser la taxonomie.

Je voudrais savoir si deux types de contenu personnalisés peuvent partager une taxonomie personnalisée. Dans drupal, je peux limiter la publication d'un type de contenu particulier à un groupe d'utilisateurs, puis cette publication peut avoir une taxonomie qui n'est partagée qu'avec un ou plusieurs autres types de contenu (mais pas tous les types).

En laissant de côté l'aspect utilisateur qui semble possible avec le rôle scoper, pouvez-vous le faire avec wordpress? Je n'ai vu qu'un type de contenu personnalisé avec une taxonomie personnalisée, mais aucun moyen de partager une taxonomie donnée entre 2 types de contenu personnalisé ou plus sans le recréer à deux endroits ou l'activer globalement via des catégories / balises ...

Merci, -Chad.

Chad Dupuis
la source

Réponses:

15

Partage d'une taxonomie entre CPT

Je voudrais savoir si deux types de contenu personnalisés peuvent partager une taxonomie personnalisée.

Simple a dit: Oui, ils le peuvent .

Comment partager

Comme je l'explique en détail dans cet article de blog , vous devez toujours enregistrer les taxonomies et types de messages les uns aux autres le plus tôt possible.

Enveloppez votre processus d'enregistrement dans une fonction, accrochée au initcrochet à la priorité par défaut.

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

Peu importe si vous utilisez le deuxième argument pour register_taxonomy()ou si vous utilisez register_taxonomy_for_object_type(), car les deux font la même chose: ils prennent le $GLOBALS['wp_taxonomies']tableau et lui affectent l'objet de type post (type).

Note importante

Assurez-vous simplement que vous enregistrez le CT et le CPT l'un à l'autre lors de leur enregistrement. Sinon, vous n'aurez pas accès à cette interconnexion pendant les hooks de requête.

kaiser
la source
2
Un problème que j'ai trouvé est que l'administrateur n'affiche pas correctement le nombre de messages pour un CPT une fois que le CT partagé est utilisé ailleurs.
Meetai.com
Je ne suis pas sûr de suivre. La question porte sur l'enregistrement d'un CT à plusieurs CPT. Cette réponse ressemble à celle illustrant l'enregistrement d'un CPT et d'un CT dans les deux sens.
Ce brésilien Guy
4

Du Codex:

taxonomies

(array) (facultatif) Un tableau de taxonomies enregistrées comme category ou post_tag qui seront utilisées avec ce type de message. Cela peut être utilisé au lieu d'appeler register_taxonomy_for_object_type()directement. Les taxonomies personnalisées doivent encore être enregistrées register_taxonomy().

Lorsque vous enregistrez votre type de publication, vous attribuez les taxonomies qu'il prend en charge ou utilisez register_taxonomy_for_object_type()à un autre moment pour ajouter la taxonomie au type de publication.

Vous pouvez attribuer une taxonomie à autant de types de publication que vous le souhaitez. Les taxonomies ne sont pas liées à un type de poste particulier.

s_ha_dum
la source
4

J'ai pu y parvenir facilement en passant un tableau de tous les types de messages personnalisés que je veux partager la taxonomie, donc mon code ressemblait à ceci:

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 ) );   
}
Kevin Ochieng
la source
Cela devrait être la réponse acceptée OMI. Concis et précis.
FaCE