Pot mai multe tipuri de postări personalizate să utilizeze aceeași taxonomie?
Mă gândesc să reconstruiesc un site Drupal în WordPress și încă încerc să înțeleg diferențele dintre cele două sisteme - în special între CCK/câmpuri și tipurile de conținut personalizat, precum și diferitele moduri de utilizare a taxonomiei.
Aș dori să știu dacă două tipuri de conținut personalizat pot împărtăși o singură taxonomie personalizată. În Drupal, pot limita postarea unui anumit tip de conținut la un grup de utilizatori, iar acea postare poate avea o taxonomie care este partajată doar cu unul sau mai multe alte tipuri de conținut (dar nu toate tipurile).
Lăsând deoparte aspectul legat de utilizatori, care pare posibil cu Role Scoper, se poate face acest lucru în WordPress? Am văzut doar tipuri de conținut personalizat cu taxonomie personalizată, dar nicio modalitate de a partaja o anumită taxonomie între 2 sau mai multe tipuri de conținut personalizat fără a o recrea în două locuri sau a o activa global prin categorii/etichete...
Mulțumesc, -Chad.
Partajarea unei taxonomii între CPT-uri
Aș dori să știu dacă două tipuri de conținut personalizat pot partaja o singură taxonomie personalizată.
Pe scurt: Da, pot.
Cum se partajează
Ar trebui să înregistrați întotdeauna taxonomiile personalizate și tipurile de posturi unul cu celălalt cât mai devreme posibil.
Încorporați procesul de înregistrare într-o funcție, conectată la hook-ul init
la prioritatea implicită.
<?php
/** Plugin Name: Înregistrează $CPT și $CT */
add_action('init', function() {
register_taxonomy(
'taxonomie_personalizata',
'tip_post_personalizat',
$array_de_argumente
);
register_post_type(
'tip_post_personalizat',
[
'taxonomies' => [ 'taxonomie_personalizata' ],
// alte argumente
]
);
}, 10 ); # <-- prioritate implicită
Nu contează dacă utilizați al 2-lea argument pentru register_taxonomy()
sau dacă utilizați register_taxonomy_for_object_type()
, deoarece ambele fac același lucru: Preiau array-ul $GLOBALS['wp_taxonomies']
și îl atribuie obiectului tip post.
Notă importantă
Asigurați-vă doar că înregistrați CT și CPT unul cu celălalt în momentul înregistrării lor. Altfel, nu veți avea acces la această interconexiune în timpul hook-urilor de interogare.

O problemă pe care am descoperit-o este că administratorul nu afișează corect numărul de articole pentru un CPT odată ce CT-ul partajat este folosit în altă parte.

Nu sunt sigur dacă am înțeles corect. Întrebarea se referă la înregistrarea unui CT la mai multe CPT-uri. Acest răspuns pare să ilustreze înregistrarea reciprocă a unui CPT și a unui CT între ele în ambele sensuri.

Am reușit să realizez acest lucru cu ușurință prin transmiterea unui array cu toate tipurile de postări personalizate (Custom Post Types) cărora doresc să le atribui taxonomia. Codul meu arăta astfel:
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' => 'Titlul Taxonomiei Personalizate', 'query_var' => true, 'rewrite' => true ) );
}

taxonomii
(array) (opțional) Un array de taxonomii înregistrate, cum ar fi categoria sau eticheta postului, care vor fi utilizate cu acest tip de postare. Aceasta poate fi folosită în locul apelării directe a funcției
register_taxonomy_for_object_type()
. Taxonomiile personalizate încă trebuie să fie înregistrate curegister_taxonomy()
.
Când înregistrezi tipul tău de postare, atribui taxonomiile pe care le suportă sau folosește register_taxonomy_for_object_type()
la un alt moment pentru a adăuga taxonomia la tipul de postare.
Poți atribui o taxonomie la câte tipuri de postare dorești. Taxonomiile nu sunt legate de un anumit tip de postare.
