{"id":229318,"date":"2022-11-12T12:54:00","date_gmt":"2022-11-12T09:54:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229318"},"modified":"2022-11-09T06:28:14","modified_gmt":"2022-11-09T03:28:14","slug":"jaergmiste-suendmuste-vaerskendamine-suendmuste-kalendri-postitustes","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/jaergmiste-suendmuste-vaerskendamine-suendmuste-kalendri-postitustes\/","title":{"rendered":"J\u00e4rgmiste s\u00fcndmuste v\u00e4rskendamine s\u00fcndmuste kalendri postitustes"},"content":{"rendered":"\n<p>See on t\u00f5esti n\u00fcansirikas juhtum, kuid ma arvasin, et v\u00f5ib-olla tasub proovida postitust \u00fcldistada k\u00f5igile, kes v\u00f5ivad t\u00f6\u00f6tada tulevaste s\u00fcndmustega Modern Tribe&#8217;i s\u00fcndmuste kalendriga.<\/p>\n<p>Oletame, et seadistate m\u00f5nda korduvat s\u00fcndmust ja soovite s\u00fcndmuse p\u00f5hitekstis (v\u00f5i \u00f5igemini <strong>post_content<\/strong>) \u00f6elda midagi sellist:<\/p>\n<blockquote>\n<p>[selle s\u00fcndmuse] toimumisest on m\u00f6\u00f6dunud N aastat.<\/p>\n<\/blockquote>\n<p>Asi on selles, et iga j\u00e4rgnev s\u00fcndmus on ilmselgelt aasta v\u00f5rra suurem kui sellele eelnenud. Seega ei saa te v\u00e4\u00e4rtust s\u00fcndmustesse tingimata sisse kodeerida, ilma et see oleks paigutatud iga s\u00fcndmuse postituse sisusse.<\/p>\n<p>Mis on \u00fcks viis selle lahendamiseks?<\/p>\n<h2>J\u00e4rgmiste s\u00fcndmuste v\u00e4rskendamine<\/h2>\n<p>Nagu enamiku asjade puhul, s\u00f5ltub see sellest, kuidas teie koodibaas on seadistatud, kuid eeldades, et t\u00f6\u00f6tate sarja s\u00fcndmustega, pole see v\u00e4ga halb.<\/p>\n<p>Selle postituse puhul eeldan, et:<\/p>\n<ol>\n<li>teil on s\u00fcndmused seadistatud nii, et teil on sarja esimene s\u00fcndmus ja seej\u00e4rel j\u00e4rgmised s\u00fcndmused),<\/li>\n<li>teil on mugav k\u00e4ivitada p\u00f5hip\u00e4ringuid kasutades <a href=\"https:\/\/codex.wordpress.org\/Class_Reference\/wpdb\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">$wpdb<\/a> ,<\/li>\n<li>teile meeldivad p\u00f5hilised regulaaravaldised,<\/li>\n<li>teile on tuttav <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_update_post\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_update_post<\/a><\/li>\n<\/ol>\n<p>\u00dcldine protsess, mille abil saate iga s\u00fcndmust v\u00e4rskendada, et kajastada selle <strong>post_content<\/strong> \u00f5iget aastate arvu, on umbes selline:<\/p>\n<ol>\n<li>kasutades sarja esimest s\u00fcndmust, otsige \u00fcles k\u00f5ik j\u00e4rgnevad postitused,<\/li>\n<li>leidke number jaotises <strong>post_content<\/strong> ja suurendage seda \u00fche v\u00f5rra,<\/li>\n<li>v\u00e4rskenda postitust.<\/li>\n<\/ol>\n<p>P\u00e4ris otsekohene, eks? Siin on, kuidas seda teha.<\/p>\n<h3>1 Otsige \u00fcles j\u00e4rgnevad s\u00fcndmused<\/h3>\n<p>J\u00e4rgmiste s\u00fcndmuste v\u00e4rskendamiseks on oluline omada p\u00f5his\u00fcndmuse ID-d. Seda on tavaliselt lihtne hankida, kui olete s\u00fcndmuse juba programmiliselt loonud, kuna <a href=\"https:\/\/theeventscalendar.com\/function\/tribe_create_event\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tribe_create_event<\/a> tagastab postituse ID.<\/p>\n<p>Vastasel juhul saate teha n\u00e4iteks postituse otsimise selle pealkirja v\u00f5i muu sarnase j\u00e4rgi. Ja kui teil on see postitus, saate selle ID haarata.<\/p>\n<p>Kui olete l\u00f5petanud, kirjutage kiire p\u00e4ring, et hankida k\u00f5ik postitused, mille esialgne postituse ID <a href=\"https:\/\/gist.github.com\/tommcfarlin\/db581f4871687c7a11c514a47aa6f618#file-00-find-all-events-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on selle vanem<\/a> :<\/p>\n<pre><code>&lt;?php\n\nprivate function find_all_events( $event_id) {\n\n  global $wpdb;\n  $events = $wpdb-&gt;get_results(\n    $wpdb-&gt;prepare(\"\n      SELECT ID, post_content\n      FROM   $wpdb-&gt;posts\n      WHERE  post_parent = '%d'\n      AND    post_status = 'publish'\n    \", $event_id),\n    ARRAY_A\n  );\n\n  return $events;\n}<\/code><\/pre>\n<p>Ilmselgelt eelistan ma seda oma funktsiooni lisada, et saaksin seda kogu rakenduses mitmesse kohta kutsuda, vajadusel siluda ja eraldada selle vastutus.<\/p>\n<p>V\u00f5ib-olla soovite tulemused tagastada objektide kogumina v\u00f5i lisada p\u00e4ringule rohkem t\u00e4hiseid, et piirata tagastatavate tulemuste t\u00fc\u00fcpi. Sellest olenemata on selle koodi peamine j\u00e4reldus see, et <strong>haarate k\u00f5igi j\u00e4rgnevate postituste<\/strong> <strong>ID<\/strong> -d ja\u00a0 post_content, mis p\u00f5hinevad esialgse s\u00fcndmuse ID-l.<\/p>\n<h3>2 V\u00e4rskendage postituse sisu<\/h3>\n<p>Kui s\u00fcndmused on tagastatud, saab nende kaudu itereerimiseks seadistada ts\u00fckli. S\u00f5ltuvalt sellest, kuidas te ts\u00fckli m\u00e4\u00e4ratlete, m\u00e4\u00e4rab loenduri seadistamise, kuid \u00fcks lihtsamaid viise selleks on:<\/p>\n<ol>\n<li>m\u00e4\u00e4rake v\u00e4\u00e4rtus, alustades \u00fchest, mida saate iga iteratsiooni ajal lisada ja suurendada,<\/li>\n<li>lisa see postitusest leitud numbrile.<\/li>\n<\/ol>\n<p>Nii et kui kasutaksite <strong>foreach<\/strong> &#8211; ts\u00fcklit, v\u00f5ib kood v\u00e4lja n\u00e4ha umbes <a href=\"https:\/\/gist.github.com\/tommcfarlin\/db581f4871687c7a11c514a47aa6f618#file-01-update-future-events-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a> :<\/p>\n<pre><code>&lt;?php\n\npublic function update_future_events( $event_id) {\n\n  $events = $this-&gt;find_all_events( $event_id );\n\n  $iteration = 1;\n  foreach ($events as $event) {\n\n    preg_match_all( '\/(d+)\/', $anniversary['post_content'], $matches );\n\n    $original_year = $matches[0];\n    $original_year = intval( $original_year[0] );\n    $new_year      = ($original_year + $iteration );\n    $iteration++;\n\n    \/\/ See forth-coming gist.\n  }\n}<\/code><\/pre>\n<p>See on pisut keerulisem, kui teie postituse p\u00f5hitekstis on mitu numbrit, kuid sellest piisab, et anda aimu, kuidas t\u00f6\u00f6tada v\u00e4hemalt \u00fche numbriga (nagu postituse \u00fclaosas olevas n\u00e4ites).<\/p>\n<h3>3 V\u00e4rskendage postitust<\/h3>\n<p>L\u00f5puks, kui <strong>post_content<\/strong> on v\u00e4rskendatud, tuleb postituse sisu v\u00e4rskendamiseks lihtsalt helistada WordPressi API-le.<\/p>\n<pre><code>&lt;?php\n\npublic function update_future_events( $event_id) {\n\n  $events = $this-&gt;find_all_events( $event_id );\n\n  $iteration = 1;\n  foreach ($events as $event) {\n\n    \/\/ See previous gist.\n\n    $event['post_content'] = str_ireplace( $original_year, $new_year, $event['post_content'] );\n    wp_update_post(array(\n      'ID'           =&gt; $event['ID'],\n      'post_content' =&gt; $event['post_content'],\n    ));\n  }\n}<\/code><\/pre>\n<p>Muidugi, nagu kogu postituses mainitud, v\u00f5ib teie kood v\u00e4lja n\u00e4ha teistsugune, selle toimivusaspektid v\u00f5ivad olla erinevad v\u00f5i n\u00f5uda muid kaalutlusi (mida k\u00e4sitlen kohe).<\/p>\n<p>Aga kui mitte midagi muud, siis see on v\u00e4hemalt l\u00e4htepunkt.<\/p>\n<h2>Muud kaalutlused<\/h2>\n<p>V\u00f5ib juhtuda, et postituse sisu sisaldab mitut numbrit, v\u00f5i v\u00f5ib juhtuda, et j\u00e4rgnevaid s\u00fcndmusi v\u00f5ib olla tuhandeid. K\u00f5igil neil juhtudel ei pruugi \u00fclaltoodud l\u00e4henemine sobida.<\/p>\n<p>See t\u00e4hendab, et saate neid samme siiski j\u00e4rgida, kuid need ei pruugi olla k\u00f5ige t\u00f5husamad, nagu kirjutatud. Sel juhul peate v\u00f5ib-olla seadistama pakkprotsessi, et seda k\u00e4sitleda v\u00f5i teha seda vabadel tundidel, kasutades cron-t\u00f6\u00f6d v\u00f5i \u00fchte mitmest muust probleemi lahendamise viisist.<\/p>\n<p>Eespool nimetatud l\u00e4henemisviisid ei kuulu selle postituse ulatusse, kuid kolmeastmeline l\u00e4henemisviis j\u00e4\u00e4b samaks. Probleemiga tegelemine on pigem jaga ja valluta, kui selle lahendamine.<\/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>Siin on l\u00e4htepunkt, kuidas v\u00e4rskendada j\u00e4rgnevaid s\u00fcndmusi, mis on s\u00fcndmuste kalendri loodud andmebaasip\u00e4ringute ja WordPressi API-de abil.<\/p>\n","protected":false},"author":1,"featured_media":165867,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,1017,894,863],"tags":[1165],"class_list":["post-229318","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kasulikud-saidid","category-kood","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229318","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=229318"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/229318\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/165867"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=229318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=229318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=229318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}