{"id":229226,"date":"2022-10-27T15:51:00","date_gmt":"2022-10-27T12:51:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229226"},"modified":"2022-11-09T06:03:27","modified_gmt":"2022-11-09T03:03:27","slug":"luo-ohjelmallisesti-toistuvia-tapahtumia-tapahtumakalenterin-avulla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/luo-ohjelmallisesti-toistuvia-tapahtumia-tapahtumakalenterin-avulla\/","title":{"rendered":"Luo ohjelmallisesti toistuvia tapahtumia tapahtumakalenterin avulla"},"content":{"rendered":"\n<p>Modern Tribe&#8217;s Event Calendar on todenn\u00e4k\u00f6isesti suosituin WordPressille saatavilla oleva kalenterilaajennus. Olen puhunut <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/tapahtumaviestityyppien-kysely-wp-kyselyllae-ja-tapahtumakalenterilla\/\" title=\"tapahtumien kyselyst\u00e4 WP_Queryn\" >tapahtumien kyselyst\u00e4 WP_Queryn<\/a> avulla edellisess\u00e4 viestiss\u00e4, mutta se koskee sek\u00e4 <a href=\"https:\/\/wordpress.org\/plugins-wp\/the-events-calendar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ilmaista<\/a> ett\u00e4 <a href=\"https:\/\/theeventscalendar.com\/product\/wordpress-events-calendar-pro\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">premium<\/a> &#8211; versiota.<\/p>\n<p>Premium-versio tarjoaa paljon hienoja ominaisuuksia, mutta jos haluat muokata kalenteria ohjelmallisesti, sen kanssa ty\u00f6skenteleminen on hieman vaikeampaa.<\/p>\n<ul>\n<li>ei ole selke\u00e4\u00e4 dokumentaatiota siit\u00e4, miten tiettyj\u00e4 ominaisuuksia voidaan hy\u00f6dynt\u00e4\u00e4 kehitt\u00e4j\u00e4n n\u00e4k\u00f6kulmasta<\/li>\n<li>paikat, joissa ihmiset ovat kysyneet kuinka tehd\u00e4 niin, <a href=\"https:\/\/theeventscalendar.com\/support\/forums\/topic\/creating-recurring-events-programmatically\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4tt\u00e4v\u00e4t toisinaan toivomisen varaa<\/a>.<\/li>\n<\/ul>\n<p>Esimerkki: Kun meid\u00e4n on luotava ohjelmallisesti toistuvia tapahtumia.<\/p>\n<p>Ollakseni rehellinen, uskon, ett\u00e4 laajennus on tarkoitettu k\u00e4ytt\u00e4jille verrattuna kehitt\u00e4jiin, joten dokumenttien toimittaminen sen sis\u00e4isen koodin jonkin osan hy\u00f6dynt\u00e4misest\u00e4 ei ole heid\u00e4n velvollisuutensa.<\/p>\n<p>Toiseksi se on avoimen l\u00e4hdekoodin. Joten niille meist\u00e4, joilla on tarve kutsua osa sen koodista, heill\u00e4 on aikaa ja debuggeri k\u00e4tev\u00e4sti, ei ole hirve\u00e4n vaikeaa istua alas katsomaan, kuinka se toimii.<\/p>\n<p>Avoimen l\u00e4hdekoodin etu, eik\u00f6 niin?<\/p>\n<p>N\u00e4in ollen tapa luoda ohjelmallisesti toistuvia tapahtumia Tapahtumakalenterin avulla edellytt\u00e4\u00e4, ett\u00e4 k\u00e4yt\u00e4mme <code>Tribe__Events__Pro__Recurrence__Meta<\/code>luokkaa.<\/p>\n<p>T\u00e4m\u00e4 olettaa, ett\u00e4 k\u00e4yt\u00e4t laajennuksen uusinta versiota (t\u00e4m\u00e4n viestin ajankohtana) ja ett\u00e4 tunnet laajennuksen sis\u00e4\u00e4nrakennetun jonotusmekanismin. Kerron t\u00e4st\u00e4 lis\u00e4\u00e4 alla olevan koodin j\u00e4lkeen.<\/p>\n<p>Toistuvan tapahtuman luomiseksi tarvitset perusasiat:<\/p>\n<ul>\n<li>toistuvan tapahtuman tyyppi,<\/li>\n<li>miten se p\u00e4\u00e4ttyy,<\/li>\n<li>aloitusp\u00e4iv\u00e4m\u00e4\u00e4r\u00e4,<\/li>\n<li>lopetusp\u00e4iv\u00e4m\u00e4\u00e4r\u00e4.<\/li>\n<\/ul>\n<p>Loput voivat olla sarja oletusarvoja. Sitten on tartuttava ilmentym\u00e4 luokkaan, asetettava arvot ja kutsuttava menetelm\u00e4.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/37ba58ce84b174de8d314c5f53a2aa02\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Esimerkiksi<\/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>Huomaa, ett\u00e4 funktion ensimm\u00e4inen parametri <code>updateRecurrenceMeta<\/code>olettaa, ett\u00e4 sinulla on tapahtuman tunnus (joka haetaan, kun luot tapahtuman ensimm\u00e4isen kerran).<\/p>\n<p>Toiseksi, riippuen k\u00e4sittelemiesi tapahtumien m\u00e4\u00e4r\u00e4st\u00e4, voi kest\u00e4\u00e4 muutaman minuutin, ennen kuin ne kaikki luodaan tietokantaan. T\u00e4m\u00e4 johtuu tavasta, jolla laajennus asettaa tapahtumasarjan jonoon.<\/p>\n<p>Sen sijaan, ett\u00e4 luotaisiin ne kaikki kerralla, se sarjoittaa tapahtumat ja luo ne sitten eriss\u00e4. T\u00e4m\u00e4 on fiksu tapa k\u00e4sitell\u00e4 sit\u00e4. Ja jos haluat hy\u00f6dynt\u00e4\u00e4 sit\u00e4 ohjelmallisesti, t\u00e4m\u00e4 on tapa saada kaikki n\u00e4m\u00e4 toiminnot ilmaiseksi.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <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 Triben tapahtumakalenterissa on hienoja ominaisuuksia, mutta jos haluat luoda ohjelmallisesti toistuvia tapahtumia, se vaatii v\u00e4h\u00e4n ty\u00f6t\u00e4.<\/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":[895,813,917,864],"tags":[1166],"class_list":["post-229226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-laajennuksia","category-muut","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=229226"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229226\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/223763"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}