Dies mag an andere Fragen erinnern, aber ich poste meine eigenen, da ich keine schlüssige Antwort gefunden habe, die für mich funktioniert hat.
Was du wissen musst
Ich habe einen benutzerdefinierten Beitragstyp (Produkte) mit einer benutzerdefinierten Taxonomie (Sammlungen). Meine Sammlungstaxonomie ist hierarchisch. Zum Beispiel habe ich eine Elternsammlung (Badezimmer), die eine gute Anzahl von Untersammlungen haben wird.
Was ich versuche zu tun
Ich versuche, Permalinks für meine Produkte zu erhalten, die beispielsweise sowohl die übergeordnete als auch die untergeordnete Sammlung enthalten
http://<domain>/products/bathroom/collection-1/postname
Was ich versucht habe
Grundsätzlich habe ich bei der Registrierung meines CPT und meiner Taxonomie sowie des Hooks 'post_type_link' mit dem Parameter rewrite rumgespielt.
Ich habe es geschafft,teilweisezum Laufen zu bringen, indem ich nur die übergeordnete Sammlung im Permalink angezeigt habe.
Jede Hilfe wäre sehr dankbar, danke.
Außerdem ist meine Permalink-Struktur: /% category% /% postname% /
Ein Teil meines Codes
CPT registrieren/Taxonomie
register_taxonomy( 'collection', array( ), array(
'label' => 'collections',
'public' => TRUE,
'show_ui' => TRUE,
'hierarchical' => TRUE,
'query_var' => 'collections',
'rewrite' => TRUE
));
register_post_type( 'product', array(
'label' => 'products',
'public' => TRUE,
'publicly_queryable' => TRUE,
'show_ui' => TRUE,
'show_in_menu' => TRUE,
'taxonomies' => array( 'collection' ),
'supports' => array( 'title', 'editor', 'author', 'custom-fields' ),
'rewrite' => array( 'slug' => 'products/%collection%', 'with_front' => false, 'hierarchical' => true )
));
flush_rewrite_rules();
Verbindungshaken vom Post-Typ
if( strpos( $permalink, '%collection%' ) === FALSE )
return $permalink;
$terms = wp_get_object_terms( $post->ID, 'collection' );
$tax_slug = "";
if( empty( $terms[0]->parent ) )
{
$tax_slug = $terms[0]->slug;// . "/" . $terms[1]-> slug;
//Second part 404's my permalinks, so commented out
}
else
{
$tax_slug = $terms[1]->slug;// . "/" . $terms[0]-> slug;
//Second part 404's my permalinks, so commented out
}
$permalink = str_replace( '%collection%', $tax_slug, $permalink );
return $permalink;
Ich kann deine Frage beantworten! Ich selbst hatte genau das gleiche Problem und habe es heute herausgefunden, sodass ich genau weiß, was Sie tun müssen.
Ich gebe sehr detaillierte Anweisungen und Code auf meine eigene Frage, also schau dort nach, ob es das Problem für dich löst. Lassen Sie mich wissen, wie es geht oder wenn Sie weitere Fragen haben.