{"id":229452,"date":"2022-10-27T15:58:00","date_gmt":"2022-10-27T12:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229452"},"modified":"2022-11-09T07:07:38","modified_gmt":"2022-11-09T04:07:38","slug":"crea-eventi-ricorrenti-a-livello-di-codice-con-il-calendario-degli-eventi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/crea-eventi-ricorrenti-a-livello-di-codice-con-il-calendario-degli-eventi\/","title":{"rendered":"Crea eventi ricorrenti a livello di codice con il calendario degli eventi"},"content":{"rendered":"\n<p>Il calendario degli eventi di Modern Tribe \u00e8 probabilmente il plug-in di calendario pi\u00f9 popolare disponibile per WordPress. Ho parlato di <a href=\"https:\/\/wordpress.mediadoma.com\/it\/interrogazione-di-tipi-di-post-di-eventi-con-wp-query-e-the-event-calendar\/\" title=\"interrogare gli eventi usando WP_Query\" >interrogare gli eventi usando WP_Query<\/a> in un post precedente, ma \u00e8 applicabile sia alla versione <a href=\"https:\/\/wordpress.org\/plugins-wp\/the-events-calendar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gratuita<\/a> che a quella <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 versione premium offre molte fantastiche funzionalit\u00e0, ma se stai cercando di manipolare il calendario in modo programmatico, \u00e8 un po&#8217; pi\u00f9 difficile lavorarci.<\/p>\n<ul>\n<li>non esiste una documentazione chiara su come sfruttare determinate funzionalit\u00e0 dal punto di vista di uno sviluppatore<\/li>\n<li>i luoghi in cui le persone hanno chiesto come farlo a volte <a href=\"https:\/\/theeventscalendar.com\/support\/forums\/topic\/creating-recurring-events-programmatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lasciano a desiderare<\/a>.<\/li>\n<\/ul>\n<p>Caso in questione: quando \u00e8 necessario creare eventi ricorrenti a livello di codice.<\/p>\n<p>Ad essere onesti, penso che il plug-in sia per gli utenti rispetto agli sviluppatori e quindi fornire documentazione su come sfruttare alcuni aspetti del suo codice interno non \u00e8 un obbligo da parte loro.<\/p>\n<p>In secondo luogo, \u00e8 open source. Quindi, per quelli di noi che hanno bisogno di invocare parte del suo codice, hanno il tempo e un debugger a portata di mano, non \u00e8 terribilmente difficile sedersi e vedere come funziona.<\/p>\n<p>Il vantaggio dell&#8217;open source, giusto?<\/p>\n<p>Detto questo, il modo per creare eventi ricorrenti a livello di codice con Event Calendar richiede l&#8217;utilizzo della <code>Tribe__Events__Pro__Recurrence__Meta<\/code>classe.<\/p>\n<p>Ci\u00f2 presuppone che tu stia utilizzando l&#8217;ultima versione del plug-in (come l&#8217;ora di questo post) e che tu abbia familiarit\u00e0 con il meccanismo di accodamento integrato nel plug-in. Tratter\u00f2 questo pi\u00f9 dopo il codice qui sotto.<\/p>\n<p>Per creare un evento ricorrente, le cose di base di cui hai bisogno sono:<\/p>\n<ul>\n<li>il tipo di evento ricorrente,<\/li>\n<li>come andr\u00e0 a finire,<\/li>\n<li>la data di inizio,<\/li>\n<li>la data di fine.<\/li>\n<\/ul>\n<p>Il resto pu\u00f2 essere una serie di valori predefiniti. Quindi si tratta di acquisire un&#8217;istanza in una classe, impostare i valori e chiamare un metodo.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/37ba58ce84b174de8d314c5f53a2aa02\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Ad esempio<\/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>Notare che il primo parametro della <code>updateRecurrenceMeta<\/code>funzione presuppone che tu abbia l&#8217;ID di un evento (che viene recuperato quando crei un evento per la prima volta).<\/p>\n<p>In secondo luogo, a seconda del numero di eventi su cui stai lavorando, potrebbero essere necessari alcuni minuti per crearli tutti nel database. Ci\u00f2 \u00e8 dovuto al modo in cui il plugin mette in coda una serie di eventi.<\/p>\n<p>Anzich\u00e9 crearli tutti in una volta, serializzer\u00e0 gli eventi e quindi li creer\u00e0 in batch. Questo \u00e8 un modo intelligente per gestirlo. E se stai cercando di trarne vantaggio a livello di codice, questo \u00e8 un modo per ottenere tutte queste funzionalit\u00e0 gratuitamente.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il calendario degli eventi di Modern Tribe ha ottime funzionalit\u00e0, ma se vuoi creare eventi ricorrenti in modo programmatico, ci vuole un po&#8217; di lavoro.<\/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":[918,896,814,865],"tags":[1168],"class_list":["post-229452","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-plugin-2","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229452"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229452\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/223763"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}