Kalendarz wydarzeń Modern Tribe jest prawdopodobnie najpopularniejszą wtyczką kalendarza dostępną dla WordPress. Mówiłem o zapytaniach o zdarzenia za pomocą WP_Query w poprzednim poście, ale dotyczy to zarówno wersji bezpłatnej, jak i premium.
Wersja premium oferuje wiele wspaniałych funkcji, ale jeśli chcesz programowo manipulować kalendarzem, praca z nią jest nieco trudniejsza.
- nie ma jasnej dokumentacji, jak korzystać z niektórych funkcji z perspektywy programisty
- miejsca, w których ludzie pytali, jak to zrobić, od czasu do czasu pozostawiają wiele do życzenia.
Przykład: kiedy musimy programowo tworzyć zdarzenia cykliczne.
Aby być uczciwym, myślę, że wtyczka jest przeznaczona dla użytkowników, a nie dla programistów, więc dostarczanie dokumentacji na temat tego, jak wykorzystać niektóre aspekty jej wewnętrznego kodu, nie jest z ich strony obowiązkiem.
Po drugie, to open source. Tak więc dla tych z nas, którzy potrzebują wywołać część kodu, mają czas i pod ręką debugger, nie jest strasznie trudno usiąść i zobaczyć, jak to działa.
Zaleta open source, prawda?
Mając to na uwadze, sposób programowego tworzenia wydarzeń cyklicznych za pomocą Kalendarza wydarzeń wymaga użycia Tribe__Events__Pro__Recurrence__Metaklasy.
Zakłada się, że używasz najnowszej wersji wtyczki (jak w momencie tego posta) i że znasz mechanizm kolejkowania wbudowany we wtyczkę. Omówię to bardziej po kodzie poniżej.
Aby utworzyć wydarzenie cykliczne, najbardziej podstawowe rzeczy, których potrzebujesz, to:
- rodzaj wydarzenia cyklicznego,
- jak to się skończy,
- data rozpoczęcia,
- data zakończenia.
Reszta może być serią wartości domyślnych. Następnie jest to kwestia pobrania instancji do klasy, ustawienia wartości i wywołania metody.
<?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 );
Zwróć uwagę, że pierwszy parametr updateRecurrenceMetafunkcji zakłada, że masz identyfikator zdarzenia (który jest pobierany podczas tworzenia zdarzenia po raz pierwszy).
Po drugie, w zależności od liczby zdarzeń, nad którymi pracujesz, utworzenie wszystkich w bazie danych może zająć kilka minut. Wynika to ze sposobu, w jaki wtyczka kolejkuje serię zdarzeń.
Zamiast tworzyć je wszystkie naraz, serializuje zdarzenia, a następnie tworzy je w partiach. To sprytny sposób na poradzenie sobie z tym. A jeśli chcesz skorzystać z tego programowo, jest to sposób na uzyskanie wszystkich tych funkcji za darmo.