{"id":228782,"date":"2022-10-27T15:46:00","date_gmt":"2022-10-27T12:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228782"},"modified":"2022-11-09T04:14:57","modified_gmt":"2022-11-09T01:14:57","slug":"cree-eventos-recurrentes-programaticamente-con-el-calendario-de-eventos","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/cree-eventos-recurrentes-programaticamente-con-el-calendario-de-eventos\/","title":{"rendered":"Cree eventos recurrentes program\u00e1ticamente con el calendario de eventos"},"content":{"rendered":"\n<p>El calendario de eventos de Modern Tribe es probablemente el complemento de calendario m\u00e1s popular disponible para WordPress. He hablado sobre <a href=\"https:\/\/wordpress.mediadoma.com\/es\/consulta-de-tipos-de-publicaciones-de-eventos-con-wp-query-y-the-event-calendar\/\" title=\"consultar eventos usando WP_Query\" >consultar eventos usando WP_Query<\/a> en una publicaci\u00f3n anterior, pero eso se aplica tanto a la versi\u00f3n <a href=\"https:\/\/wordpress.org\/plugins-wp\/the-events-calendar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gratuita<\/a> como a la <a href=\"https:\/\/theeventscalendar.com\/product\/wordpress-events-calendar-pro\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">premium<\/a>.<\/p>\n<p>La versi\u00f3n premium ofrece muchas caracter\u00edsticas excelentes, pero si est\u00e1 buscando manipular el calendario mediante programaci\u00f3n, es un poco m\u00e1s dif\u00edcil trabajar con \u00e9l.<\/p>\n<ul>\n<li>no hay documentaci\u00f3n clara sobre c\u00f3mo aprovechar ciertas caracter\u00edsticas desde la perspectiva de un desarrollador<\/li>\n<li>los lugares donde la gente ha preguntado c\u00f3mo hacerlo de vez en cuando <a href=\"https:\/\/theeventscalendar.com\/support\/forums\/topic\/creating-recurring-events-programmatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dejan algo que desear<\/a>.<\/li>\n<\/ul>\n<p>Caso en cuesti\u00f3n: cuando necesitamos crear eventos recurrentes mediante programaci\u00f3n.<\/p>\n<p>Para ser justos, creo que el complemento es para usuarios versus desarrolladores, por lo que proporcionar documentaci\u00f3n sobre c\u00f3mo aprovechar alg\u00fan aspecto de su c\u00f3digo interno no es una obligaci\u00f3n de su parte.<\/p>\n<p>En segundo lugar, es de c\u00f3digo abierto. Entonces, para aquellos de nosotros que tenemos la necesidad de invocar parte de su c\u00f3digo, tenemos el tiempo y un depurador a mano, no es terriblemente dif\u00edcil sentarse y ver c\u00f3mo funciona.<\/p>\n<p>La ventaja del c\u00f3digo abierto, \u00bfverdad?<\/p>\n<p>Dicho esto, la forma de crear eventos recurrentes mediante programaci\u00f3n con Calendario de eventos requiere que usemos la <code>Tribe__Events__Pro__Recurrence__Meta<\/code>clase.<\/p>\n<p>Esto supone que est\u00e1 utilizando la \u00faltima versi\u00f3n del complemento (como el momento de esta publicaci\u00f3n) y que est\u00e1 familiarizado con el mecanismo de cola integrado en el complemento. Cubrir\u00e9 esto m\u00e1s despu\u00e9s del c\u00f3digo a continuaci\u00f3n.<\/p>\n<p>Para crear un evento recurrente, las cosas m\u00e1s b\u00e1sicas que necesitas son:<\/p>\n<ul>\n<li>el tipo de evento recurrente,<\/li>\n<li>como va a terminar,<\/li>\n<li>la fecha de inicio,<\/li>\n<li>la fecha de finalizaci\u00f3n.<\/li>\n<\/ul>\n<p>El resto puede ser una serie de valores por defecto. Luego, se trata de tomar una instancia de una clase, establecer los valores y llamar a un m\u00e9todo.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/37ba58ce84b174de8d314c5f53a2aa02\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Por ejemplo<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/\/ First, create the main event. `$event` is defined prior to this call.\n$event_id = tribe_create_event( $event );\n\n\/\/ Set the arguments for the recurring event.\n$data = array(\n    'recurrence' =&gt; array(\n        'rules' =&gt; array(\n            array(\n                'type'                  =&gt; 'Every Year',\n                'end-type'              =&gt; 'Never',\n                'end'                   =&gt; '',\n                'end-count'             =&gt; '',\n                'EventStartDate'        =&gt; $start_date,\n                'EventEndDate'          =&gt; $end_date,\n                'custom'                =&gt; array(),\n                'occurrence-count-text' =&gt; 'events',\n            ),\n        ),\n    ),\n);\n\n\/\/ Instantiate and set it in motion.\n$recurrence_meta  = new Tribe__Events__Pro__Recurrence__Meta();\n$recurrence_meta-&gt;updateRecurrenceMeta( $event_id, $data );<\/code><\/pre>\n<p>Observe que el primer par\u00e1metro de la <code>updateRecurrenceMeta<\/code>funci\u00f3n asume que tiene el ID de un evento (que se recupera cuando crea un evento por primera vez).<\/p>\n<p>En segundo lugar, dependiendo de la cantidad de eventos en los que est\u00e9 trabajando, es posible que se tarden unos minutos en crearlos todos en la base de datos. Esto se debe a la forma en que el complemento pone en cola una serie de eventos.<\/p>\n<p>En lugar de crearlos todos a la vez, serializar\u00e1 los eventos y luego los crear\u00e1 en lotes. Esta es una forma inteligente de manejarlo. Y si est\u00e1 buscando aprovecharlo mediante programaci\u00f3n, esta es una forma de obtener toda esa funcionalidad de forma gratuita.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El calendario de eventos de Modern Tribe tiene excelentes funciones, pero si desea crear eventos recurrentes mediante programaci\u00f3n, requiere un poco de trabajo.<\/p>\n","protected":false},"author":1,"featured_media":223763,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,810,914,861],"tags":[1172],"class_list":["post-228782","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-complementos","category-otro","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=228782"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/228782\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/223763"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=228782"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=228782"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=228782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}