Modern Tribe’s Event Calendar är förmodligen den mest populära kalenderplugin som finns tillgänglig för WordPress. Jag har pratat om att fråga efter händelser med WP_Query i ett tidigare inlägg men det är tillämpligt på både gratis- och premiumversionerna.
Premiumversionen erbjuder många fantastiska funktioner, men om du är ute efter att programmässigt manipulera kalendern är det lite svårare att arbeta med den.
- det finns ingen tydlig dokumentation om hur man drar fördel av vissa funktioner ur en utvecklares perspektiv
- de platser där folk har frågat hur man gör det lämnar ibland något övrigt att önska.
Exempel: När vi behöver skapa återkommande händelser programmatiskt.
För att vara rättvis tror jag att plugin-programmet är för användare kontra utvecklare och att tillhandahålla dokumentation om hur man kan utnyttja någon aspekt av dess interna kod är inte en skyldighet från deras sida.
För det andra är det öppen källkod. Så för de av oss som har ett behov av att anropa en del av dess kod, har tid och en debugger till hands, är det inte särskilt svårt att sätta sig ner och se hur det fungerar.
Fördelen med öppen källkod, eller hur?
Med det sagt, sättet att programmatiskt skapa återkommande händelser med Event Calendar kräver att vi använder Tribe__Events__Pro__Recurrence__Metaklassen.
Detta förutsätter att du använder den senaste versionen av plugin-programmet (som tidpunkten för detta inlägg) och att du är bekant med kömekanismen som är inbyggd i plugin-programmet. Jag kommer att täcka detta mer efter koden nedan.
För att skapa ett återkommande evenemang är de mest grundläggande sakerna du behöver:
- typen av återkommande händelse,
- hur det kommer att sluta,
- startdatumet,
- slutdatumet.
Resten kan vara en serie standardvärden. Sedan handlar det om att ta en instans till en klass, ställa in värdena och anropa en metod.
<?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 );
Lägg märke till att den första parametern till updateRecurrenceMetafunktionen antar att du har ID för en händelse (som hämtas när du först skapar en händelse).
För det andra, beroende på antalet händelser du arbetar med, kan det ta några minuter för alla att skapas i databasen. Detta beror på hur plugin-programmet köar en serie händelser.
Istället för att skapa dem alla på en gång kommer det att serialisera händelserna och sedan skapa dem i omgångar. Det här är ett smart sätt att hantera det. Och om du vill dra nytta av det programmatiskt är det här ett sätt att få all den funktionaliteten gratis.