Календар подій Modern Tribe, ймовірно, найпопулярніший плагін календаря, доступний для WordPress. У попередній публікації я говорив про надсилання запитів на події за допомогою WP_Query, але це стосується як безкоштовної, так і преміум – версії.
Преміум-версія пропонує багато чудових функцій, але якщо ви хочете програмно маніпулювати календарем, працювати з ним буде трохи складніше.
- немає чіткої документації про те, як скористатися певними функціями з точки зору розробника
- місця, де люди запитували, як це зробити, часом залишають бажати кращого.
Приклад: коли нам потрібно програмно створити повторювані події.
Чесно кажучи, я думаю, що плагін призначений для користувачів проти розробників, тому надання документації про те, як використовувати певні аспекти його внутрішнього коду, не є обов’язком з їхнього боку.
По-друге, це відкритий код. Таким чином, для тих із нас, хто має потребу викликати частину його коду, має час і зручний налагоджувач, не так вже й важко сісти й подивитися, як це працює.
Перевага відкритого коду, правда?
З огляду на це, спосіб програмного створення повторюваних подій за допомогою Календаря подій вимагає використання Tribe__Events__Pro__Recurrence__Metaкласу.
Це припускає, що ви використовуєте останню версію плагіна (як на момент публікації) і що ви знайомі з механізмом черги, вбудованим у плагін. Я розповім про це докладніше після коду нижче.
Щоб створити повторювану подію, вам знадобляться найпростіші речі:
- тип повторюваної події,
- як це закінчиться,
- дата початку,
- кінцева дата.
Решта може бути серією значень за замовчуванням. Потім потрібно захопити екземпляр до класу, встановити значення та викликати метод.
<?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 );
Зверніть увагу, що перший параметр updateRecurrenceMetaфункції передбачає, що у вас є ідентифікатор події (який отримується, коли ви вперше створюєте подію).
По-друге, залежно від кількості подій, над якими ви працюєте, для їх створення в базі даних може знадобитися кілька хвилин. Це пов’язано з тим, як плагін ставить у чергу серію подій.
Замість того, щоб створювати їх усі одразу, він серіалізуватиме події, а потім створюватиме їх пакетами. Це розумний спосіб впоратися з цим. І якщо ви хочете скористатися перевагами цього програмно, це спосіб отримати всі ці функції безкоштовно.