8722 sujets

Développement web côté serveur, CMS

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 slution est peut être très simple, mais je ne vois plus rien Smiley confus .

un énorme merci à ceux qui peuvent y jeter un coup d'oeil et possiblement m'aider ! Smiley biggrin

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éé:
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();
}

Modifié par hophop (03 Jan 2022 - 13:57)