{"id":229066,"date":"2022-10-27T16:07:00","date_gmt":"2022-10-27T13:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229066"},"modified":"2022-11-09T05:24:09","modified_gmt":"2022-11-09T02:24:09","slug":"creer-par-programmation-des-evenements-recurrents-avec-le-calendrier-des-evenements","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/creer-par-programmation-des-evenements-recurrents-avec-le-calendrier-des-evenements\/","title":{"rendered":"Cr\u00e9er par programmation des \u00e9v\u00e9nements r\u00e9currents avec le calendrier des \u00e9v\u00e9nements"},"content":{"rendered":"\n<p>Le calendrier des \u00e9v\u00e9nements de Modern Tribe est probablement le plugin de calendrier le plus populaire disponible pour WordPress. J&rsquo;ai parl\u00e9 de l&rsquo; <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/interroger-les-types-de-publications-devenements-avec-wp-query-et-le-calendrier-des-evenements\/\" title=\"interrogation d'\u00e9v\u00e9nements \u00e0 l'aide de WP_Query\" >interrogation d&rsquo;\u00e9v\u00e9nements \u00e0 l&rsquo;aide de WP_Query<\/a> dans un article pr\u00e9c\u00e9dent, mais cela s&rsquo;applique aux versions <a href=\"https:\/\/wordpress.org\/plugins-wp\/the-events-calendar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gratuite<\/a> et <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 version premium offre de nombreuses fonctionnalit\u00e9s int\u00e9ressantes, mais si vous cherchez \u00e0 manipuler le calendrier par programmation, il est un peu plus difficile de travailler avec.<\/p>\n<ul>\n<li>il n&rsquo;y a pas de documentation claire sur la fa\u00e7on de tirer parti de certaines fonctionnalit\u00e9s du point de vue d&rsquo;un d\u00e9veloppeur<\/li>\n<li>les endroits o\u00f9 les gens ont demand\u00e9 comment faire <a href=\"https:\/\/theeventscalendar.com\/support\/forums\/topic\/creating-recurring-events-programmatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">laissent parfois \u00e0 d\u00e9sirer<\/a>.<\/li>\n<\/ul>\n<p>Exemple concret\u00a0: lorsque nous devons cr\u00e9er des \u00e9v\u00e9nements r\u00e9currents par programmation.<\/p>\n<p>Pour \u00eatre juste, je pense que le plugin est destin\u00e9 aux utilisateurs plut\u00f4t qu&rsquo;aux d\u00e9veloppeurs et donc fournir de la documentation sur la fa\u00e7on d&rsquo;exploiter certains aspects de son code interne n&rsquo;est pas une obligation de leur part.<\/p>\n<p>Deuxi\u00e8mement, c&rsquo;est open source. Donc, pour ceux d&rsquo;entre nous qui ont besoin d&rsquo;invoquer une partie de son code, qui ont le temps et un d\u00e9bogueur \u00e0 port\u00e9e de main, il n&rsquo;est pas tr\u00e8s difficile de s&rsquo;asseoir et de voir comment cela fonctionne.<\/p>\n<p>L&rsquo;avantage de l&rsquo;open source, non ?<\/p>\n<p>Cela dit, la fa\u00e7on de cr\u00e9er par programmation des \u00e9v\u00e9nements r\u00e9currents avec Event Calendar n\u00e9cessite que nous utilisions la <code>Tribe__Events__Pro__Recurrence__Meta<\/code>classe.<\/p>\n<p>Cela suppose que vous utilisez la derni\u00e8re version du plugin (au moment de cet article) et que vous connaissez le m\u00e9canisme de mise en file d&rsquo;attente int\u00e9gr\u00e9 au plugin. Je couvrirai cela plus apr\u00e8s le code ci-dessous.<\/p>\n<p>Pour cr\u00e9er un \u00e9v\u00e9nement r\u00e9current, les \u00e9l\u00e9ments les plus \u00e9l\u00e9mentaires dont vous avez besoin sont\u00a0:<\/p>\n<ul>\n<li>le type d&rsquo;\u00e9v\u00e9nement r\u00e9current,<\/li>\n<li>comment \u00e7a va finir,<\/li>\n<li>la date de d\u00e9but,<\/li>\n<li>la date de fin.<\/li>\n<\/ul>\n<p>Le reste peut \u00eatre une s\u00e9rie de valeurs par d\u00e9faut. Ensuite, il s&rsquo;agit de saisir une instance dans une classe, de d\u00e9finir les valeurs et d&rsquo;appeler une m\u00e9thode.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/37ba58ce84b174de8d314c5f53a2aa02\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Par exemple<\/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>Notez que le premier param\u00e8tre de la <code>updateRecurrenceMeta<\/code>fonction suppose que vous avez l&rsquo;ID d&rsquo;un \u00e9v\u00e9nement (qui est r\u00e9cup\u00e9r\u00e9 lorsque vous cr\u00e9ez un \u00e9v\u00e9nement pour la premi\u00e8re fois).<\/p>\n<p>Deuxi\u00e8mement, selon le nombre d&rsquo;\u00e9v\u00e9nements sur lesquels vous travaillez, cela peut prendre quelques minutes pour qu&rsquo;ils soient tous cr\u00e9\u00e9s dans la base de donn\u00e9es. Cela est d\u00fb \u00e0 la fa\u00e7on dont le plugin met en file d&rsquo;attente une s\u00e9rie d&rsquo;\u00e9v\u00e9nements.<\/p>\n<p>Plut\u00f4t que de les cr\u00e9er tous en m\u00eame temps, il s\u00e9rialisera les \u00e9v\u00e9nements, puis les cr\u00e9era par lots. C&rsquo;est une fa\u00e7on intelligente de le g\u00e9rer. Et si vous cherchez \u00e0 en tirer parti par programmation, c&rsquo;est un moyen d&rsquo;obtenir gratuitement toutes ces fonctionnalit\u00e9s.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le calendrier des \u00e9v\u00e9nements de Modern Tribe a d&rsquo;excellentes fonctionnalit\u00e9s, mais si vous souhaitez cr\u00e9er des \u00e9v\u00e9nements r\u00e9currents par programmation, cela demande un peu de travail.<\/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":[915,893,811,862],"tags":[1167],"class_list":["post-229066","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-plugins-2","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=229066"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/229066\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/223763"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=229066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=229066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=229066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}