Existe-t-il un moyen (en plus d'ajouter un lien personnalisé) pour ajouter une archive de type de publication personnalisée à un menu dans WordPress? S'il est ajouté à l'aide d'un lien personnalisé (par exemple / cpt-archive-slug /), WordPress n'applique pas de classes comme current-menu-item
à l'élément list, ce qui présente des défis lors de la stylisation du menu.
Si le lien personnalisé contient l'URL complète (par exemple http://site.com/cpt-archive-slug/ ), ces classes sont ajoutées. Cependant, ce n'est probablement pas une «meilleure pratique».
la source
J'ai développé un peu la réponse de tungd pour donner plus de générosité à cette approche. Cette implémentation permet d'ajouter des mappages arbitraires entre les «macros» de menu et les URL Wordpress internes que seul le backend connaît.
J'ai également décidé d'utiliser
!
le préfixe de ces macros pour éviter qu'elles ne se heurtent aux ancres nommées - cela inclut une surcharge pour supprimer le 'http: //' de l'URL du lien (car Wordpress tentera de normaliser ces liens étranges) . Si cette implémentation vous dérange, vous pouvez toujours supprimer l'preg_replace()
appel et l'utiliser#
comme préfixe de lien comme auparavant.la source
Vous pouvez créer une page, puis lui appliquer un modèle d'archive personnalisé. Je crée et utilise archive- {post-type} .php pour le nom du modèle comme vous le feriez pour l'archive par défaut, je l'applique manuellement à la page.
Si vous faites cela, je vous recommande de définir votre CPT sur has_archive = 'false' pour éviter les collisions de permaliens, tout en vous assurant simplement que votre page a un slug de permalien différent de celui de votre slug d'archive CPT.
la source
J'ai rencontré le même problème exact et j'ai trouvé cette solution:
Source: http://www.wptavern.com/forum/plugins-hacks/2169-current-page-custom-post-type-archive.html
la source
Je pense que je devrais créer un nouveau type de post "parent", donc le type de post personnalisé que je veux montrer devient un "enfant", et ce parent sera répertorié dans le menu.
Cela devrait être une option. Créer un parent factice juste pour l'avoir répertorié dans le menu est trop de travail.
Je voudrais un moyen de le faire à partir du modèle ou des fonctions, donc je n'ai pas à le faire dans les paramètres de chaque menu pour chaque site dans mon installation multisite.
la source
J'ai trouvé cette réponse lors de la recherche d'un problème similaire. Je viens de copier le code dans mon fichier finctions.php et cela a fonctionné dès la sortie de la boîte :) espérons que cela aide!
Navigation dynamique pour le type de publication personnalisé (pages)
la source
Ce que je fais au lieu d'ajouter le lien, c'est de créer une page vide. Dans cette page, j'ajoute quelque chose comme "Contenu généré à partir de nom-cpt" dans l'éditeur afin que mon client sache d'où viennent toutes les choses.
Ensuite, j'ajoute cette page au menu et avec le code suivant, je m'assure qu'elle est mise en surbrillance lorsque archives-cpt ou single-cpt est en cours d'exécution.
Cela vérifiera le titre du menu / page et si nous voyons réellement l'archive ou la page individuelle d'un type de publication personnalisé. Si c'est vrai, il ajoutera la classe d'élément de menu en cours.
la source