Календарь событий 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функции предполагает, что у вас есть идентификатор события (который извлекается при первом создании события).
Во-вторых, в зависимости от количества событий, над которыми вы работаете, их создание в базе данных может занять несколько минут. Это связано с тем, как плагин ставит в очередь серию событий.
Вместо того, чтобы создавать их все сразу, он сериализует события, а затем создает их партиями. Это умный способ справиться с этим. И если вы хотите воспользоваться этим программно, это способ получить все эти функции бесплатно.