Il calendario degli eventi di Modern Tribe è probabilmente il plug-in di calendario più popolare disponibile per WordPress. Ho parlato di interrogare gli eventi usando WP_Query in un post precedente, ma è applicabile sia alla versione gratuita che a quella premium.
La versione premium offre molte fantastiche funzionalità, ma se stai cercando di manipolare il calendario in modo programmatico, è un po’ più difficile lavorarci.
- non esiste una documentazione chiara su come sfruttare determinate funzionalità dal punto di vista di uno sviluppatore
- i luoghi in cui le persone hanno chiesto come farlo a volte lasciano a desiderare.
Caso in questione: quando è necessario creare eventi ricorrenti a livello di codice.
Ad essere onesti, penso che il plug-in sia per gli utenti rispetto agli sviluppatori e quindi fornire documentazione su come sfruttare alcuni aspetti del suo codice interno non è un obbligo da parte loro.
In secondo luogo, è open source. Quindi, per quelli di noi che hanno bisogno di invocare parte del suo codice, hanno il tempo e un debugger a portata di mano, non è terribilmente difficile sedersi e vedere come funziona.
Il vantaggio dell’open source, giusto?
Detto questo, il modo per creare eventi ricorrenti a livello di codice con Event Calendar richiede l’utilizzo della Tribe__Events__Pro__Recurrence__Metaclasse.
Ciò presuppone che tu stia utilizzando l’ultima versione del plug-in (come l’ora di questo post) e che tu abbia familiarità con il meccanismo di accodamento integrato nel plug-in. Tratterò questo più dopo il codice qui sotto.
Per creare un evento ricorrente, le cose di base di cui hai bisogno sono:
- il tipo di evento ricorrente,
- come andrà a finire,
- la data di inizio,
- la data di fine.
Il resto può essere una serie di valori predefiniti. Quindi si tratta di acquisire un’istanza in una classe, impostare i valori e chiamare un metodo.
<?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 );
Notare che il primo parametro della updateRecurrenceMetafunzione presuppone che tu abbia l’ID di un evento (che viene recuperato quando crei un evento per la prima volta).
In secondo luogo, a seconda del numero di eventi su cui stai lavorando, potrebbero essere necessari alcuni minuti per crearli tutti nel database. Ciò è dovuto al modo in cui il plugin mette in coda una serie di eventi.
Anziché crearli tutti in una volta, serializzerà gli eventi e quindi li creerà in batch. Questo è un modo intelligente per gestirlo. E se stai cercando di trarne vantaggio a livello di codice, questo è un modo per ottenere tutte queste funzionalità gratuitamente.