Le calendrier des événements de Modern Tribe est probablement le plugin de calendrier le plus populaire disponible pour WordPress. J’ai parlé de l’ interrogation d’événements à l’aide de WP_Query dans un article précédent, mais cela s’applique aux versions gratuite et premium.
La version premium offre de nombreuses fonctionnalités intéressantes, mais si vous cherchez à manipuler le calendrier par programmation, il est un peu plus difficile de travailler avec.
- il n’y a pas de documentation claire sur la façon de tirer parti de certaines fonctionnalités du point de vue d’un développeur
- les endroits où les gens ont demandé comment faire laissent parfois à désirer.
Exemple concret : lorsque nous devons créer des événements récurrents par programmation.
Pour être juste, je pense que le plugin est destiné aux utilisateurs plutôt qu’aux développeurs et donc fournir de la documentation sur la façon d’exploiter certains aspects de son code interne n’est pas une obligation de leur part.
Deuxièmement, c’est open source. Donc, pour ceux d’entre nous qui ont besoin d’invoquer une partie de son code, qui ont le temps et un débogueur à portée de main, il n’est pas très difficile de s’asseoir et de voir comment cela fonctionne.
L’avantage de l’open source, non ?
Cela dit, la façon de créer par programmation des événements récurrents avec Event Calendar nécessite que nous utilisions la Tribe__Events__Pro__Recurrence__Metaclasse.
Cela suppose que vous utilisez la dernière version du plugin (au moment de cet article) et que vous connaissez le mécanisme de mise en file d’attente intégré au plugin. Je couvrirai cela plus après le code ci-dessous.
Pour créer un événement récurrent, les éléments les plus élémentaires dont vous avez besoin sont :
- le type d’événement récurrent,
- comment ça va finir,
- la date de début,
- la date de fin.
Le reste peut être une série de valeurs par défaut. Ensuite, il s’agit de saisir une instance dans une classe, de définir les valeurs et d’appeler une méthode.
<?php
// First, create the main event. `$event` is defined prior to this call.
$event_id = tribe_create_event( $event );
// Set the arguments for the recurring event.
$data = array(
'recurrence' => array(
'rules' => array(
array(
'type' => 'Every Year',
'end-type' => 'Never',
'end' => '',
'end-count' => '',
'EventStartDate' => $start_date,
'EventEndDate' => $end_date,
'custom' => array(),
'occurrence-count-text' => 'events',
),
),
),
);
// Instantiate and set it in motion.
$recurrence_meta = new Tribe__Events__Pro__Recurrence__Meta();
$recurrence_meta->updateRecurrenceMeta( $event_id, $data );
Notez que le premier paramètre de la updateRecurrenceMetafonction suppose que vous avez l’ID d’un événement (qui est récupéré lorsque vous créez un événement pour la première fois).
Deuxièmement, selon le nombre d’événements sur lesquels vous travaillez, cela peut prendre quelques minutes pour qu’ils soient tous créés dans la base de données. Cela est dû à la façon dont le plugin met en file d’attente une série d’événements.
Plutôt que de les créer tous en même temps, il sérialisera les événements, puis les créera par lots. C’est une façon intelligente de le gérer. Et si vous cherchez à en tirer parti par programmation, c’est un moyen d’obtenir gratuitement toutes ces fonctionnalités.