distribution d'événements ( posts wp ) dans un calendrier mensuel

Petit nouveau ! | 5 Messages

03 janv. 2022, 13:33

Bonjour tout le monde! et une bien bonne année !

je suis face à un dilemme de distribution d'événements par mois.
J'ai créé des champs ACF avec date_start et date_end pour pouvoir faire des événements qui durent sur plusieurs jours ou mois.

j'ai donc fait une fonction qui reprend la date de début pour redistribuer les événements par mois..ça c'est plutôt ok. Mais ça se complique lorsque que l'on a plusieurs mois. je ne peux ni prendre la date de fin ni un mois intermédiaire (si sur 3 mois), et donc mes événements n'apparaissent que d'après leur première date.
Je crois que je suis un peu fatigué, la solution est peut être très simple, mais je ne vois plus rien [confus].

un énorme merci à ceux qui peuvent y jeter un coup d'oeil et possiblement m'aider ! [biggrin]
Et n'hésitez pas à me dire si je ne suis pas très clair :)

Je vous laisse la page en question (c'est la partie basse avec les mois qui défilent)
https://test.lesateliersduvent.org/

et aussi le bout de fonction déjà créé:

Code : Tout sélectionner

function posts_per_month() { $args = array( 'post_type' => 'post', 'category' => 13, 'numberposts' => -1, 'orderby' => 'meta_value', 'meta_key' => 'date_start', 'order' => 'DESC' ); $posts = get_posts($args); $i = 0; $_year_mon = ''; $_has_grp = false; $post_cal = ''; foreach ($posts as $post) { setup_postdata($post); $date = get_field('date_start', $post->ID); $date2 = get_field('date_end', $post->ID); $time = strtotime($date); $year = date('Y', $time); $mon = date('F', $time); $year_mon = $mon . ' ' . $year; $i++; // Open a new group. if ($year_mon !== $_year_mon) { // Close previous group, if any. if ($_has_grp) { $post_cal .= '</div></div><!-- .month -->'; //$post_cal .= '</div><!-- .year -->'; } $_has_grp = true; $mois_an = utf8_encode(strftime("%B %Y", strtotime($date))); $my = strftime("%m-%Y", strtotime($date)); $post_cal .= '<div data-my="' . $my . '" data-date="' . $mois_an . '" class="border-left" style="direction:ltr">'; $post_cal .= '<div class="row no-gutters row-cols-4 " style="background:#000">'; } // start - posts $post_cal .= liste_posts_cal(array( 'cat' => 13, 'id' => $post->ID ) ); // end - posts $_year_mon = $year_mon; } // Close the last group, if any. if ($_has_grp) { $post_cal .= '</div>'; $post_cal .= '</div>'; } return $post_cal; wp_reset_postdata(); }