{"id":228519,"date":"2022-10-27T16:20:00","date_gmt":"2022-10-27T13:20:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228519"},"modified":"2022-11-09T02:50:00","modified_gmt":"2022-11-08T23:50:00","slug":"skapa-aaterkommande-haendelser-med-evenemangskalendern","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/skapa-aaterkommande-haendelser-med-evenemangskalendern\/","title":{"rendered":"Skapa \u00e5terkommande h\u00e4ndelser med evenemangskalendern"},"content":{"rendered":"\n<p>Modern Tribe&#8217;s Event Calendar \u00e4r f\u00f6rmodligen den mest popul\u00e4ra kalenderplugin som finns tillg\u00e4nglig f\u00f6r WordPress. Jag har pratat om <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/fraaga-efter-typer-av-haendelseinlaegg-med-wp-query-och-haendelsekalendern\/\" title=\"att fr\u00e5ga efter h\u00e4ndelser med WP_Query\" >att fr\u00e5ga efter h\u00e4ndelser med WP_Query<\/a> i ett tidigare inl\u00e4gg men det \u00e4r till\u00e4mpligt p\u00e5 b\u00e5de <a href=\"https:\/\/wordpress.org\/plugins-wp\/the-events-calendar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">gratis-<\/a> och <a href=\"https:\/\/theeventscalendar.com\/product\/wordpress-events-calendar-pro\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">premiumversionerna<\/a>.<\/p>\n<p>Premiumversionen erbjuder m\u00e5nga fantastiska funktioner, men om du \u00e4r ute efter att programm\u00e4ssigt manipulera kalendern \u00e4r det lite sv\u00e5rare att arbeta med den.<\/p>\n<ul>\n<li>det finns ingen tydlig dokumentation om hur man drar f\u00f6rdel av vissa funktioner ur en utvecklares perspektiv<\/li>\n<li>de platser d\u00e4r folk har fr\u00e5gat hur man g\u00f6r det <a href=\"https:\/\/theeventscalendar.com\/support\/forums\/topic\/creating-recurring-events-programmatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4mnar ibland n\u00e5got \u00f6vrigt att \u00f6nska<\/a>.<\/li>\n<\/ul>\n<p>Exempel: N\u00e4r vi beh\u00f6ver skapa \u00e5terkommande h\u00e4ndelser programmatiskt.<\/p>\n<p>F\u00f6r att vara r\u00e4ttvis tror jag att plugin-programmet \u00e4r f\u00f6r anv\u00e4ndare kontra utvecklare och att tillhandah\u00e5lla dokumentation om hur man kan utnyttja n\u00e5gon aspekt av dess interna kod \u00e4r inte en skyldighet fr\u00e5n deras sida.<\/p>\n<p>F\u00f6r det andra \u00e4r det \u00f6ppen k\u00e4llkod. S\u00e5 f\u00f6r de av oss som har ett behov av att anropa en del av dess kod, har tid och en debugger till hands, \u00e4r det inte s\u00e4rskilt sv\u00e5rt att s\u00e4tta sig ner och se hur det fungerar.<\/p>\n<p>F\u00f6rdelen med \u00f6ppen k\u00e4llkod, eller hur?<\/p>\n<p>Med det sagt, s\u00e4ttet att programmatiskt skapa \u00e5terkommande h\u00e4ndelser med Event Calendar kr\u00e4ver att vi anv\u00e4nder <code>Tribe__Events__Pro__Recurrence__Meta<\/code>klassen.<\/p>\n<p>Detta f\u00f6ruts\u00e4tter att du anv\u00e4nder den senaste versionen av plugin-programmet (som tidpunkten f\u00f6r detta inl\u00e4gg) och att du \u00e4r bekant med k\u00f6mekanismen som \u00e4r inbyggd i plugin-programmet. Jag kommer att t\u00e4cka detta mer efter koden nedan.<\/p>\n<p>F\u00f6r att skapa ett \u00e5terkommande evenemang \u00e4r de mest grundl\u00e4ggande sakerna du beh\u00f6ver:<\/p>\n<ul>\n<li>typen av \u00e5terkommande h\u00e4ndelse,<\/li>\n<li>hur det kommer att sluta,<\/li>\n<li>startdatumet,<\/li>\n<li>slutdatumet.<\/li>\n<\/ul>\n<p>Resten kan vara en serie standardv\u00e4rden. Sedan handlar det om att ta en instans till en klass, st\u00e4lla in v\u00e4rdena och anropa en metod.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/37ba58ce84b174de8d314c5f53a2aa02\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Till exempel<\/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>L\u00e4gg m\u00e4rke till att den f\u00f6rsta parametern till <code>updateRecurrenceMeta<\/code>funktionen antar att du har ID f\u00f6r en h\u00e4ndelse (som h\u00e4mtas n\u00e4r du f\u00f6rst skapar en h\u00e4ndelse).<\/p>\n<p>F\u00f6r det andra, beroende p\u00e5 antalet h\u00e4ndelser du arbetar med, kan det ta n\u00e5gra minuter f\u00f6r alla att skapas i databasen. Detta beror p\u00e5 hur plugin-programmet k\u00f6ar en serie h\u00e4ndelser.<\/p>\n<p>Ist\u00e4llet f\u00f6r att skapa dem alla p\u00e5 en g\u00e5ng kommer det att serialisera h\u00e4ndelserna och sedan skapa dem i omg\u00e5ngar. Det h\u00e4r \u00e4r ett smart s\u00e4tt att hantera det. Och om du vill dra nytta av det programmatiskt \u00e4r det h\u00e4r ett s\u00e4tt att f\u00e5 all den funktionaliteten gratis.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modern Tribe&#8217;s Event Calendar har fantastiska funktioner, men om du programmatiskt vill skapa \u00e5terkommande h\u00e4ndelser tar det lite arbete.<\/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":[901,922,818,868],"tags":[1173],"class_list":["post-228519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-oevrig","category-plugins-3","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228519"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/223763"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}