Je crée un thème avec un type de publication personnalisé pour les membres de l'équipe, j'ai également la structure de page suivante:
about <-- this is a page
about/team-members <-- this is a page, lists all the team members
about/team-members/joe-bloggs <-- this is a custom post type (team member) entry
La troisième structure utilise ici les pages à propos et des membres de l'équipe, mais continue à utiliser le slug de type de publication personnalisé pour donner l'impression que ses parents sont membres de l'équipe et environ. J'ai atteint cet objectif en définissant les options suivantes sur le type de publication personnalisé:
...
'rewrite' => array( 'slug' => 'about/team-members', 'with_front' => false)
...
Cela fonctionne très bien, mais lorsque je descends au niveau de publication des membres de l'équipe, je n'obtiens plus les classes page actuelle et ancêtre actuel sur les pages parent. Je sais pourquoi c'est parce que nous ne sommes pas techniquement sur un parent pagea de ces pages, mais y a-t-il un moyen de tromper / corriger / héberger pour que les pages apparaissent en tant que parents?
J'avais bien réussi cela en utilisant des pages pour les membres de l'équipe, mais un type de publication personnalisé a été choisi à la place pour une utilisation facile pour l'administrateur.
Merci les gars + les filles!
la source
register_post_type
documentation, pouvez-vous m'aider?Réponses:
Lorsque vous travaillez avec des pages, vous pouvez sélectionner une page parent et cette valeur est enregistrée en tant que numéro d'identification de la page parent dans le
post_parent
champ de la page enfant dans la base de données.Dans votre cas, vous utilisez un type de publication personnalisé, vous devez donc créer votre propre métabox pour la page parent; quelque chose comme:
Cela n'a rien à voir avec
register_post_type
. Vous incitez WordPress à penser qu'il s'agit d'une page enfant d'un autre type de publication (page).la source
wp_list_pages
.wp_nav_menu
- le post_parent concerne / team-members mais la navigation met en évidence l'élément parent de mes articles de blog "normaux" ... une autre idée comment je pourrais résoudre ce problème?Je suis allé avec un déambulateur personnalisé pour réaliser quelque chose de similaire ... évite les besoins de champs personnalisés, mais tous les messages d'un type doivent se trouver en dessous du même point dans l'arborescence de la page.
la source
Avis de non-responsabilité: après l'avoir essayé, cela ne semble plus être un problème, car - au moins pour moi - cela fonctionne uniquement sur mon installation WP 3.9.2. Impossible de trouver un traqueur de bogues correspondant.
J'ai sorti ensemble un petit plugin pour tester cela, ce qui pourrait aider quelqu'un. Mais comme je l'ai dit dans l'avertissement ci-dessus, je ne pouvais pas reproduire le problème dans une installation wordpress actuelle. J'ai séparé le plugin en quatre fichiers, ils vont ensemble dans un répertoire à l'intérieur du répertoire du plugin.
plugin-cpt_menu_hierarchy.php :
include-register_post_type.php :
include-cpt_parent_meta_box.php :
include-menu_highlighting.php :
la source
Une solution possible consiste à chaque fois que le type de publication personnalisé est enregistré, vous pouvez définir son parent de manière
about/team-members
pragmatique.Voici les étapes:
la source
J'ai eu un peu plus de temps pour creuser cela moi-même (désolé si j'ai perdu le temps de quelqu'un), et je me suis dit que pour moi, la meilleure façon de résoudre le problème de mise en évidence serait de refaire ce qui
_wp_menu_item_classes_by_context()
est en train de faire, c'est-à-dire d'itérer sur tout parents et ancêtres de l'élément de menu qui agit en tant que parent de mon type de publication personnalisé, et ajoutez les classes de manière appropriée.Étant donné que je voulais également que la page parent de mon type de publication personnalisé soit fixe et facilement modifiable sans avoir à mettre à jour toutes les publications une fois le parent modifié, j'ai décidé d'utiliser une option au lieu de remplir le
post_parent
champ de mes publications de type de publication personnalisé. J'ai utilisé ACF pour cela depuis que je l'utilise de toute façon dans mon thème, mais utiliser la fonctionnalité option WordPress par défaut le ferait bien sûr aussi.Pour mes besoins, je pouvais utiliser le
wp_nav_menu_objects
filtre. De plus, j'ai dû filtrer l'page_for_posts
option pour qu'elle renvoie une valeur faussement / vide, cela évite que la page de messages par défaut ne soit également mise en surbrillance.Notez que je ne suis pas allé jusqu'au bout, le filtre n'ajoute que les classes
current-menu-ancestor
etcurrent-menu-parent
, car cela suffisait à mes besoins!Par souci d'exhaustivité, lors du remplissage
post_parent
(voir la réponse de @ Bainternet ) au lieu d'utiliser des options, la récupération de l'ID parent pourrait ressembler à ceci:la source
http://codex.wordpress.org/Function_Reference/get_post_type_object http://codex.wordpress.org/Function_Reference/get_page_by_path
EDIT 1:
Étant donné que les pointeurs ne fonctionnent pas:
la source