J'ai créé 2 types de messages personnalisés: "classes" et "enseignants". J'ai créé à l'aide du plug-in Advanced Custom Fields un champ pour le type de message personnalisé "classes", un multisélection qui m'aide à ajouter certains "professeurs" existants à chaque classe. Le champ multi-sélection renvoie les identifiants de ces enseignants. Donc, quand je vais sur single-classes.php, il est facile de lister pour la classe actuelle tous les professeurs que j'ai sélectionnés.
Situation Je suis maintenant sur single-teacher.php et j'essaie de lister pour le professeur actuel toutes les "classes" sur lesquelles il a été sélectionné. champ multisélect. Tout cela dans la barre latérale. J'ai donc fait une boucle dans toutes les classes avec une autre boucle à l'intérieur qui passe par les enseignants. Lorsque l'ID de l'un de ces enseignants est égal à l'ID de l'enseignant actuel (depuis que je suis sur single-teacher.php), affichez le titre de la classe. Voici le code:
<?php
$current_post_id = $post->ID; // Get current teacher id
$num = -1;
$k=0;
// loop throught the classes
$args='&suppress_filters=true&posts_per_page='.$num.'&post_type=classes
&order=DESC&orderby=date';
$cust_loop = new WP_Query($args);
if ($cust_loop->have_posts()) :
while ($cust_loop->have_posts()) : $cust_loop->the_post();
$teachers_list = get_field('teachers');
if($teachers_list !="") {
$inner_args = array(
'posts_per_page' => -1,
'offset' => 0,
'category' => '',
'category_name' => '',
'orderby' => 'name',
'order' => 'ASC',
'post__in' => $teachers_list,
'post_type' => 'teachers',
);
$wp_query = new WP_Query($inner_args);
// loop throught the teachers of each class
// if one of those teachers has the id equal with the current
// teacher id then show the title of the class
while ($wp_query->have_posts()) : $wp_query->the_post();
if( $current_post_id === $post->ID ) {
$k = 1;
}
endwhile;
wp_reset_postdata();
}
if ($k==1) { ?>
<a class="post-title" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
<?php $k=0;
}
endwhile;
endif;
wp_reset_query(); ?>
Le problème est-ce
<a class="post-title" href="<?php the_permalink(); ?>"
title="<?php the_title(); ?>"><?php the_title(); ?></a>
ne montre pas le titre de la classe, mais le titre de l'enseignant, plus je ne suis pas sûr que cela fonctionne pleinement.
Après des heures et des heures, j'ai finalement compris. Je n'avais qu'à remplacer wp_reset_postdata (); avec $ cust_loop-> reset_postdata ();