Luo ohjelmallisesti toistuvia tapahtumia tapahtumakalenterin avulla
Modern Tribe’s Event Calendar on todennäköisesti suosituin WordPressille saatavilla oleva kalenterilaajennus. Olen puhunut tapahtumien kyselystä WP_Queryn avulla edellisessä viestissä, mutta se koskee sekä ilmaista että premium – versiota.
Premium-versio tarjoaa paljon hienoja ominaisuuksia, mutta jos haluat muokata kalenteria ohjelmallisesti, sen kanssa työskenteleminen on hieman vaikeampaa.
- ei ole selkeää dokumentaatiota siitä, miten tiettyjä ominaisuuksia voidaan hyödyntää kehittäjän näkökulmasta
- paikat, joissa ihmiset ovat kysyneet kuinka tehdä niin, jättävät toisinaan toivomisen varaa.
Esimerkki: Kun meidän on luotava ohjelmallisesti toistuvia tapahtumia.
Ollakseni rehellinen, uskon, että laajennus on tarkoitettu käyttäjille verrattuna kehittäjiin, joten dokumenttien toimittaminen sen sisäisen koodin jonkin osan hyödyntämisestä ei ole heidän velvollisuutensa.
Toiseksi se on avoimen lähdekoodin. Joten niille meistä, joilla on tarve kutsua osa sen koodista, heillä on aikaa ja debuggeri kätevästi, ei ole hirveän vaikeaa istua alas katsomaan, kuinka se toimii.
Avoimen lähdekoodin etu, eikö niin?
Näin ollen tapa luoda ohjelmallisesti toistuvia tapahtumia Tapahtumakalenterin avulla edellyttää, että käytämme Tribe__Events__Pro__Recurrence__Metaluokkaa.
Tämä olettaa, että käytät laajennuksen uusinta versiota (tämän viestin ajankohtana) ja että tunnet laajennuksen sisäänrakennetun jonotusmekanismin. Kerron tästä lisää alla olevan koodin jälkeen.
Toistuvan tapahtuman luomiseksi tarvitset perusasiat:
- toistuvan tapahtuman tyyppi,
- miten se päättyy,
- aloituspäivämäärä,
- lopetuspäivämäärä.
Loput voivat olla sarja oletusarvoja. Sitten on tartuttava ilmentymä luokkaan, asetettava arvot ja kutsuttava menetelmä.
<?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 );
Huomaa, että funktion ensimmäinen parametri updateRecurrenceMetaolettaa, että sinulla on tapahtuman tunnus (joka haetaan, kun luot tapahtuman ensimmäisen kerran).
Toiseksi, riippuen käsittelemiesi tapahtumien määrästä, voi kestää muutaman minuutin, ennen kuin ne kaikki luodaan tietokantaan. Tämä johtuu tavasta, jolla laajennus asettaa tapahtumasarjan jonoon.
Sen sijaan, että luotaisiin ne kaikki kerralla, se sarjoittaa tapahtumat ja luo ne sitten erissä. Tämä on fiksu tapa käsitellä sitä. Ja jos haluat hyödyntää sitä ohjelmallisesti, tämä on tapa saada kaikki nämä toiminnot ilmaiseksi.