J'essaie d'utiliser des boucles imbriquées avec le plugin posts to posts. Les boucles fonctionnent toutes les deux, mais le problème survient après la deuxième boucle imbriquée ($ issue). Je souhaite accéder à nouveau à la boucle $ publication, mais les données sont toujours les données $ issue.
wp_reset_query()
va réinitialiser la boucle principale dans single.php dont je ne veux pas.
Je pourrais utiliser get_posts()
au lieu de nouveau WP_Query, mais je veux pouvoir utiliser get_template_part()
.
Comment puis-je réinitialiser mes données dans la boucle de publication, de sorte que le deuxième «titre de publication» renvoie la publication, pas le numéro, le titre?
Voici mon code dans single.php:
$publication = new WP_Query( array(
'connected_type' => 'publication_to_post',
'connected_items' => $post->ID,
'fields' => 'ids',
'posts_per_page' => 1,
) );
if ( $publication->have_posts() ) {
while ( $publication->have_posts() ) : $publication->the_post();
echo '<h2>Publication title = '.get_the_title().'</h2>';
$pub_id = get_the_ID();
$issue = new WP_Query( array(
'connected_type' => 'publication_to_issue',
'connected_items' => $pub_id,
'fields' => 'ids',
'posts_per_page' => 1,
) );
if ( $issue->have_posts() ) {
while ( $issue->have_posts() ) : $issue->the_post();
// need to be able to use template parts in here
echo '<h2>Issue title = '.get_the_title().'</h2>';
endwhile;
}
// This currently returns the issue title, not the publication title
echo '<h2>Publication title = '.get_the_title().'</h2>';
endwhile;
}
Tout d'abord, je pense qu'il est possible d'utiliser
get_posts()
en combinaison avecsetup_postdata()
. Avec ceux-ci, vous pouvez utiliser les balises de modèle comme dans une boucle WordPress normale.Mais vous pouvez également utiliser cette fonction dans vos boucles imbriquées:
la source