En travaillant sur un nouveau projet de thème, j'ai créé un type d'article personnalisé appelé produits avec sa propre taxonomie. Je veux que la structure de l'URL soit:
http://example.com/products/main_category/subcategory1/subcategory2/postname/
J'ai trouvé cette solution ici:
function filter_post_type_link($link, $post)
{
if ($post->post_type == 'products')
return $link;
if ($cats = get_the_terms($post->ID, 'product_categories'))
$link = str_replace('%product_categories%', array_pop($cats)->slug, $link);
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
Avec cette solution, j'ai pu créer cette structure:
http://example.com/products/category/postname/
Donc, les sous-catégories ne seront toujours pas affichées dans l'URL ...
L’autre problème est que lorsque je règle la taxonomie hierarchical => true
, l’URL ressemble à ceci lorsque je parcours les catégories de produits:
http://example.com/products/category1/subcategory1-category1/subcategory2-subcategory1-category1/
et aussi lorsque hierarchical => true
est présent, le code mentionné ci-dessus cesse de fonctionner.
Donc, ce que je veux réaliser avec les URL de produit est essentiellement ceci: Si le produit appartient à la catégorie principale:
http://example.com/products/main_category/postname/
Si le produit appartient à la sous-catégorie 1:
http://example.com/products/main_category/subcategory1/postname/
Si le produit appartient à la sous-catégorie 2:
http://example.com/products/main_category/subcategory1/subcategory2/postname/
Bien sûr, si je supprime le nom de poste des URL ci-dessus, wp devrait indiquer la catégorie appropriée. Ce serait une structure hiérarchique de Nice.
Connaissez-vous des solutions pour y arriver?
Meilleurs voeux, Matt
Débarrassez-vous du filtre que vous avez. Assurez-vous que vous utilisez 'rewrite' => array( 'hierarchical' => 'true' )
dans votre fonction register_taxonomy()
. N'oubliez pas de vider les règles de réécriture. Voir cette page pour plus d'infos: Codex