Bonjour.

Sujet du problème :
j'ai repris un code que j'avais créé difficilement il y a 2 ans pour afficher, dans un shortcode WordPress, un agenda indiquant les jours ouverts et jours fermés d'une association.

Jusqu'à présent j'éditais ce code pour qu'il affiche l'information au jour le jour les vacances prochaines, le jour férié prochain.
À présent je souhaite automatiser toutes les informations des jours d'ouverture et de fermeture, ainsi que les jours fériés, les vacances scolaires et des événnements exceptionnel déjà connus.

Mon code actuel ne comporte qu'une seule comparaison de date sur une période donnée ( ex : du 19 oct au 3 nov * = vacances scolaires)
Mon code se comportait de la façon suivante :
Si la période annoncée * était en cours alors j'affichais les horaires de vacances, sinon les horaires d'ouverture normaux.

A présent je complexifie énormément le code puisque j'ai plusieurs période de vacances , plusieurs jours fériés et des horaires exceptionnels pour les vacances de noël etc.

Question & problème:
Je sais ou en tout cas je pense fortement que mon problème actuel ce situe dans la syntaxe utilisée pour comparer plusieurs fois deux dates comprenant les vacances scolaires.

Pouvez vous m'aidez à trouver une solution pour comparer, dans une seule condition (if), deux dates (une période de vacances scolaires) plusieurs fois ( toutes les périodes des vacances scolaires ?
Je n'arrive pas à trouver la bonne syntaxe ou la bonne logique pour arriver à comparer plusieurs période :
ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$TodayDate->getTimestamp() > $automne1->getTimestamp() && $TodayDate->getTimestamp() < $automne2->getTimestamp() &&
     $TodayDate->getTimestamp() > $noel1->getTimestamp() && $TodayDate->getTimestamp() < $noel2->getTimestamp() && etc ...
Evidemment si vous connaissez une solution plus simple ou un codeur super sympas qui aurait publier un code open source pour les vacances scolaires et jours fériés je suis preneur.

mon code complet ci-dessous :
merci par avance pour votre temps et votre aide


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
function whatday() {
     //vac automne
     $automne1 = new DateTime('2019-10-19');
     $automne2  = new DateTime('2019-11-03');
 
     //vac noel - voir horaires exceptionnels plus bas
     $noel1 = new DateTime('2019-12-21');
     $noel2 = new DateTime('2020-01-05');
 
     // vac hiver
     $hiver1 = new DateTime('2020-02-08');
     $hiver2 = new DateTime('2020-02-23');
 
     //vac printemps
     $printemps1 = new DateTime('2020-04-04');
     $printemps2 = new DateTime('2020-04-19');
 
     // vac été
     $ete1 = new DateTime('2020-07-04');
     $ete2 = new DateTime('2020-07-13');
     $ete3 = new DateTime('2020-07-15');
     $ete4 = new DateTime('2020-08-14');
     $ete5 = new DateTime('2020-08-16');
 
     //rentrée sco 2020
     $ete6 = new DateTime('2020-09-01');
 
     //jours fériés
     $armistice18 = new DateTime('2019-11-11');
     $epiphanie = new DateTime('2020-01-06');
     $fetetravail = new DateTime('2020-05-01');
     $victoire45 = new DateTime('2020-05-08');
     $ascension = new DateTime('2020-05-21');
     $lunpentecote = new DateTime('2020-06-01');
     $14juillet = new DateTime('2020-07-14');
     $asomption = new DateTime('2020-08-15');
 
     // Horaires execptionnels noel du 24 dec au 5 janvier
 
     // conditions vacances scolaires
     if (
     $TodayDate->getTimestamp() > $automne1->getTimestamp() && $TodayDate->getTimestamp() < $automne2->getTimestamp() &&
     $TodayDate->getTimestamp() > $noel1->getTimestamp() && $TodayDate->getTimestamp() < $noel2->getTimestamp() &&
     $TodayDate->getTimestamp() > $hiver1->getTimestamp() && $TodayDate->getTimestamp() < $hiver2->getTimestamp() &&
     $TodayDate->getTimestamp() > $printemps1->getTimestamp() && $TodayDate->getTimestamp() < $printemps2->getTimestamp() &&
     $TodayDate->getTimestamp() > $automne1->getTimestamp() && $TodayDate->getTimestamp() < $automne2->getTimestamp() &&
     $TodayDate->getTimestamp() > $ete1->getTimestamp() && $TodayDate->getTimestamp() < $ete2->getTimestamp() &&
     $TodayDate->getTimestamp() > $ete3->getTimestamp() && $TodayDate->getTimestamp() < $ete4->getTimestamp() &&
     $TodayDate->getTimestamp() > $ete5->getTimestamp() && $TodayDate->getTimestamp() < $ete6->getTimestamp()
     )
     {
     if($NameDay === 'Mon')
     return "8h00 à 21h30";
     if($NameDay === 'Tue')
     return "12h00 à 21h30";
     if($NameDay === 'Wed')
     return "8h00 à 21h30";
     if($NameDay === 'Thu')
     return "12h00 à 21h30";
     if($NameDay === 'Fri')
     return "8h00 à 21h30";
     if($NameDay === 'Sat')
     return "8h00 à 19h00";
     if($NameDay === 'Sun')
     return "8h00 à 12h00";
     }
     // conditions jours fériés et vac noel
     else if(
     $TodayDate->getTimestamp() === $armistice18->getTimestamp() &&
     $TodayDate->getTimestamp() === $epiphanie->getTimestamp() &&
     $TodayDate->getTimestamp() === $fetetravail->getTimestamp() &&
     $TodayDate->getTimestamp() === $victoire45->getTimestamp() &&
     $TodayDate->getTimestamp() === $ascension->getTimestamp() &&
     $TodayDate->getTimestamp() === $lunpentecote->getTimestamp() &&
     $TodayDate->getTimestamp() === $14juillet->getTimestamp() &&
     $TodayDate->getTimestamp() === $asomption->getTimestamp() &&
     )
     {
     return "FERMÉEE";
     }
     // conditions horaires normaux
     else{
 
     if($NameDay === 'Mon')
     return "8h00 à 21h30";
     if($NameDay === 'Tue')
     return "8h00 à 21h30";
     if($NameDay === 'Wed')
     return "8h00 à 21h30";
     if($NameDay === 'Thu')
     return "8h00 à 21h30";
     if($NameDay === 'Fri')
     return "8h00 à 21h30";
     if($NameDay === 'Sat')
     return "08h00 à 19h00";
     if($NameDay === 'Sun')
     return "08h00 à 12h00";
     }
     */
};
add_shortcode('opendays', 'whatday');