J'ai un petit problème avec les pages de catégorie pour une taxonomie personnalisée lorsque des permaliens personnalisés sont utilisés, et je me demandais si quelqu'un pourrait peut-être aider et indiquer où je me trompe.
J'ai créé une taxonomie "Marques" à utiliser avec un type d'article personnalisé (dans ce cas, Produits), en utilisant le code ci-dessous dans le fichier functions.php du thème. J'ai créé un modèle de page pour la page Marques, qui répertorie toutes les marques à l'aide de la balise de modèle wp_list_categories ($ args), et c'est très bien.
Maintenant, si j'utilise les paramètres de permalien par défaut de Wordpress (où vous obtenez les URL se terminant par? Page_id = 7 et similaires), en cliquant sur l'une de ces marques dans la liste, vous vous dirigez vers une page de catégorie qui répertorie tous les produits de cette marque - ce qui est exactement l'intention. Si toutefois je mets en place une autre structure permalien personnalisée (disons/xyz /% postname% /), lorsque vous cliquez sur le nom de la marque, la page 404 apparaît à la place de la page de catégorie (il en va de même lorsque vous cliquez sur une marque lorsque en consultant la liste dans l’administrateur de Wordpress).
Avec la structure permalien personnalisée, lorsque vous cliquez sur la marque, elle semble utiliser la structure d’URL correcte (http://www.siteroot.com/brands/brandname/) pour afficher la page 404. Avec le paramètre de permalien par défaut, il passe à http://www.siteroot.com/?brand=brandname qui fonctionne correctement.
J'ai consulté divers guides sur la création de taxonomies personnalisées et j'ai essayé de faire très attention lors de la définition de la réécriture de la taxonomie. Aujourd'hui, je ne sais plus trop quel est le problème. Toute aide sera très appréciée.
add_action( 'init', 'build_taxonomies', 0 );
function build_taxonomies() {
register_taxonomy(
'brand',
'products',
array(
'labels' => array(
'name' => 'Brands',
'singular_name' => 'Brand',
'search_items' => 'Search Brands',
'popular_items' => 'Popular Brands',
'all_items' => 'All Brands',
'parent_item' => 'Parent Brand',
'parent_item_colon' => 'Parent Brand:',
'edit_item' => 'Edit Brand',
'update_item' => 'Update Brand',
'add_new_item' => 'Add New Brand',
'new_item_name' => 'New Brand Name'
),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'sort' => true,
'query_var' => true,
'args' => array('orderby' => 'term_order'),
'rewrite' => array('slug' => 'brands', 'with_front' => false)
)
);
}
Ajoutez flush_rewrite_rules();
après les taxonomies de votre registre. Cela a réglé le problème pour moi.
Modifier
Assurez-vous de le faire lors de l'installation de votre plugin si vous l'utilisez sur un. Il ne doit être exécuté qu’une fois lors de l’activation du pug-in - et pas à chaque chargement de page . Vous pouvez également visiter la page Paramètres> Liens permanents, car elle efface également les règles.
Si vous utilisez une structure permalinkg avec une base avant, assurez-vous que with_front
est true
.
'rewrite' => array(
'slug' => 'brands',
'with_front' => true
)
Je suis peut-être bien parti ici (et c'est une vieille question), mais utilisez-vous par hasard le WP No Category Base plugin? ou avez-vous dans le passé sur ce site?
J'ai trouvé que lorsque je désactivais le plugin, j'obtenais des résultats similaires à ceux que vous décrivez.
J'ai également eu un problème avec une seule catégorie listant "aucun post trouvé".
Je n'ai jamais compris la cause du problème, mais je l'ai résolu. Ma méthode est publiée sur les forums WordPress.org .
Ce qui a finalement fonctionné pour moi a été de changer une valeur lors de la définition des propriétés de taxonomie. Si vous définissez 'rewrite' => false,
, il ne devrait plus vous causer de problèmes, et vous pourrez même définir les permaliens à tout ce que vous voulez sans créer de problèmes pour votre taxonomie personnalisée :)