Cela peut ressembler à d’autres questions, mais je publie la mienne car je ne trouvais pas de réponse concluante qui me conviendrait.
Ce que vous devez savoir
J'ai un type d'article personnalisé (produits), avec une taxonomie personnalisée (collections). La taxonomie de mes collections est hiérarchique. Par exemple, j'ai une collection parente (salle de bains) qui contient un bon nombre de sous-collections.
Ce que j'essaie de faire
J'essaie d'obtenir des permaliens pour mes produits, qui incluent à la fois la collection parent et la collection enfant, exemple
http://<domain>/products/bathroom/collection-1/postname
Ce que j'ai essayé
En gros, j'ai joué avec le paramètre rewrite lors de l'enregistrement de mon CPT et de ma taxonomie, ainsi qu'avec le hook 'post_type_link'.
J'ai réussi à le faire fonctionner partiellement , c'est-à-dire en affichant uniquement la collection parent dans le permalien.
Toute aide serait grandement appréciée, merci.
De plus, ma structure de lien permanent est la suivante: /% category% /% postname% /
Une partie de mon code
Enregistrement de CPT/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();
crochet de type post-lien
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;
Je peux répondre à ta question! J'ai moi-même eu exactement le même problème et je l'ai compris aujourd'hui, alors je sais exactement ce que vous devez faire.
Je donne des instructions très détaillées et un code à ma propre question, alors allez voir et voyez si cela résout le problème pour vous. Faites-moi savoir comment ça se passe ou si vous avez d'autres questions.