Dans ce tuto, je vais tenter d’expliquer comment parvenir à gérer des relations entre vos types de contenus, avec une utilisation spécifique du plugin post to post,
De custom post à custom post
Dans ce scénario, je fais référence au concept de loop dans la loop qu’on retrouve ici
Voici le scénario du site: on a une liste d’artiste, et une liste d’evènements..on voudrait pouvoir lier les deux, de sorte que lorsque l’on se trouve dans la page d’édition de l’artiste, on puisse y associer une ou des exihbitions(dans une liste), et inversement, lorsque l’on est sur la page d’édition d’un évènement, on peut y associer un ou des artistes.Cela peut servir par exemple à afficher dynamiquement le nom le de l’artiste (qui est en fait le titre de mon custom post « artist ») sous chaque nom d’éxhibition et ou inversement..
Post to post nous permet de le faire dynamiquement, une fois notre fonction (« type de connexion ») et nos boucles crées, tout se fait tout seul.
Dans ce cas précis, on a nos deux custom post type: artist et exhibitions (ou evenement)
je place ce code dans functions.php
cela va automatiquement créer des metabox dans mes deux types de contenus.:
Dans la page artist, on retrouve notre metabox qui nous permet de selectionner parmi toutes les exhibitions.
Dans la page exhibition, on retrouve automatiquement la liste de tous les custom post « artist » crées :
Se reférer à ce chapitre pour comprendre la réciprocité des relations
Et voici ensuite un exemple de boucle pour restituer, sur une page « exhibition », la liste de noms e tous les artistes récupérés par ma fonction:
Je suis ici sur un modèle de page « exhibition », censée me restituer toutes les exhibitions avec dans la liste du contenu, le nom de l’artiste lié.
Pour ce faire, je crée donc ma boucle initiale avec mes arguments, je place un <?php
$preserve_post = get_post();?> pour conserver ma boucle initiale, je lance ma deuxième boucle allant chercher ma fonction crée précédemment: ‘connected_type’ => ‘posts_to_posts’,je récupère ici juste le titre de mes custom post « artist ».
Enfin je récupère l’état de ma boucle initiale avec un $post = $preserve_post;
setup_postdata( $post ); pour continuer a afficher d’autres informations de la boucle initiale.
Dans la page Artist, je peux également, dans une boucle afficher le contenu par exemple du type de contenu lié,
c’est le meme type de connexion auquel je fais appel dans mes arguments: « ‘connected_type’ => ‘posts_to_posts’, » puisque ma fonction crée des liens dans les deux sens.