WordPress : Page en tant qu’enfant d’un type de publication personnalisé

Publié par Jean-Michel le

J’ai un type de message personnalisé appelé « Professions », il contient différentes professions et des informations à leur sujet. Pour les montrer, j’utilise simplement un content-profession.php-file.

Le fait est que j’ai besoin de sous-pages (enfants) pour ces professions qui contiennent des informations telles que le salaire, les conditions, où trouver des emplois, etc. Elles ne peuvent pas être du même type que les professions CPT car ce type de publication a une mise en page très spécifique. Existe-t-il un moyen d’obtenir une page normale en tant qu’enfant d’un type de publication personnalisé ?

Cela a déjà été discuté ici:

Page en tant qu’enfant dans un slug de type de publication personnalisé ?

mais avec la solution de réécriture des URL qui ressemble à une solution très « hacky » au problème.

Solution n°1 trouvée

Le plugin mentionné par Barry semble à peu près ce dont vous avez besoin, mais si vous ne voulez rien acheter, voici une autre solution possible :

Vous pouvez ajouter un champ personnalisé dans les sous-pages elles-mêmes contenant l’identifiant de la profession.

Ensuite, dans la page profession, vous pouvez faire une requête de publication avec comme argument la méta-valeur pour obtenir toutes les pages qui ont cet identifiant de profession comme valeur de champ personnalisé. Et ainsi générer vos liens…

La bonne idée est que si vous décidez que certaines de ces pages sont répétées pour chaque profession et ont toujours la même mise en page, vous pouvez les transformer en leur propre type de message personnalisé, il vous suffira de les inclure dans la requête, mais tout le reste peut fonctionner avec la même logique…

Solution n°2 trouvée

When you register the post type you can set hierarchical to true.

hierarchical
(boolean) (optional)

Whether the post type is hierarchical (e.g. page). Allows Parent to be specified. The ‘supports’ parameter should contain ‘page-attributes’ to show the parent select box on the editor page.

Default: false

Note: this parameter was planned for Pages. Be careful, when choosing it for your custom post type – if you are planning to have many entries (say – over 100), you will run into memory issue. With this parameter set to true WordPress will fetch all entries of that particular post type, together with all meta data, on each administration page load for your post type.

Assurez-vous ensuite que le tableau de supports inclut des attributs de page pour afficher le menu parent.

par exemple:

// Register post type
register_post_type('your-post-type' , array(
    'labels' => $labels,
    'hierarchical' => true,
    'supports' => array( 'title', 'editor', 'page-attributes' )
) );

Plus d’infos dans le codex

Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *