O Calendário de Eventos da Tribo Moderna é provavelmente o plugin de calendário mais popular disponível para WordPress. Eu falei sobre consultar eventos usando WP_Query em um post anterior, mas isso se aplica às versões gratuita e premium.
A versão premium oferece muitos recursos excelentes, mas se você deseja manipular programaticamente o calendário, é um pouco mais difícil trabalhar com ele.
- não há documentação clara sobre como tirar proveito de certos recursos da perspectiva de um desenvolvedor
- os lugares onde as pessoas perguntaram como fazê-lo ocasionalmente deixam algo a desejar.
Caso em questão: quando precisamos criar eventos recorrentes programaticamente.
Para ser justo, acho que o plugin é para usuários versus desenvolvedores e, portanto, fornecer documentação sobre como aproveitar algum aspecto de seu código interno não é uma obrigação da parte deles.
Em segundo lugar, é de código aberto. Portanto, para aqueles de nós que precisam invocar alguns de seus códigos, têm tempo e um depurador à mão, não é muito difícil sentar e ver como funciona.
A vantagem do código aberto, certo?
Com isso dito, a maneira de criar eventos recorrentes programaticamente com o Calendário de Eventos exige que usemos a Tribe__Events__Pro__Recurrence__Metaclasse.
Isso pressupõe que você esteja usando a versão mais recente do plug-in (como no momento desta postagem) e que esteja familiarizado com o mecanismo de enfileiramento integrado ao plug-in. Eu vou cobrir isso mais depois do código abaixo.
Para criar um evento recorrente, as coisas mais básicas que você precisa são:
- o tipo de evento recorrente,
- como vai acabar,
- a data de início,
- a data de término.
O resto pode ser uma série de valores padrão. Então é uma questão de pegar uma instância de uma classe, definir os valores e chamar um método.
<?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 );
Observe que o primeiro parâmetro da updateRecurrenceMetafunção pressupõe que você tenha o ID de um evento (que é recuperado quando você cria um evento pela primeira vez).
Em segundo lugar, dependendo do número de eventos em que você está trabalhando, pode levar alguns minutos para que todos sejam criados no banco de dados. Isso ocorre devido à maneira como o plug-in enfileira uma série de eventos.
Em vez de criá-los todos de uma vez, ele serializará os eventos e os criará em lotes. Esta é uma maneira inteligente de lidar com isso. E se você deseja aproveitá-lo programaticamente, essa é uma maneira de obter toda essa funcionalidade gratuitamente.