Looge programmiliselt korduvaid sündmusi sündmuste kalendriga
Modern Tribe’s Event Calendar on tõenäoliselt kõige populaarsem WordPressi jaoks saadaolev kalendri pistikprogramm. Rääkisin eelmises postituses sündmuste päringute tegemisest WP_Query abil, kuid see kehtib nii tasuta kui ka tasulise versiooni kohta.
Tasuline versioon pakub palju suurepäraseid funktsioone, kuid kui soovite kalendrit programmiliselt manipuleerida, on sellega töötamine pisut keerulisem.
- Puudub selge dokumentatsioon selle kohta, kuidas teatud funktsioone arendaja vaatenurgast ära kasutada
- kohad, kus inimesed on küsinud, kuidas seda teha, jätavad aeg-ajalt soovida.
Näide: kui meil on vaja programmiliselt luua korduvaid sündmusi.
Ausalt öeldes arvan, et pistikprogramm on mõeldud kasutajatele, mitte arendajatele ja seetõttu ei ole nende sisemise koodi mõne aspekti ärakasutamise dokumentide esitamine nende jaoks kohustus.
Teiseks on see avatud lähtekoodiga. Nii et neil meist, kellel on vaja mõnda selle koodi käivitada, kellel on aega ja silur käepärast, ei ole väga raske maha istuda ja vaadata, kuidas see töötab.
Avatud lähtekoodi eelis, eks?
Seda arvestades eeldab korduvate sündmuste programmiline loomine sündmuste kalendriga, et kasutaksime Tribe__Events__Pro__Recurrence__Metaklassi.
See eeldab, et kasutate pistikprogrammi uusimat versiooni (selle postituse ajal) ja olete tuttav pistikprogrammi sisseehitatud järjekorramehhanismiga. Ma käsitlen seda rohkem pärast allolevat koodi.
Korduva sündmuse loomiseks on kõige elementaarsemad asjad, mida vajate:
- korduva sündmuse tüüp,
- kuidas see lõpeb,
- alguskuupäev,
- lõppkuupäev.
Ülejäänud võivad olla vaikeväärtuste jada. Siis tuleb haarata eksemplar klassi juurde, määrata väärtused ja kutsuda meetod.
Näiteks :
<?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 );
Pange tähele, et funktsiooni esimene parameeter updateRecurrenceMetaeeldab, et teil on sündmuse ID (mis hangitakse sündmuse esmakordsel loomisel).
Teiseks, olenevalt teie töös olevate sündmuste arvust, võib nende kõigi andmebaasis loomiseks kuluda mõni minut. Selle põhjuseks on viis, kuidas pistikprogramm sündmuste jada järjekorda paneb.
Selle asemel, et neid kõiki korraga luua, järjestab see sündmused ja loob need seejärel partiidena. See on nutikas viis sellega toime tulla. Ja kui soovite seda programmiliselt ära kasutada, on see viis kogu selle funktsiooni tasuta hankimiseks.