{"id":233002,"date":"2023-02-02T16:07:00","date_gmt":"2023-02-02T13:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233002"},"modified":"2022-11-10T18:43:16","modified_gmt":"2022-11-10T15:43:16","slug":"kuinka-luoda-arkistosivu-yhteenveto-kaikille-wordpress-viesteille-sivuille-php-n-avulla","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/kuinka-luoda-arkistosivu-yhteenveto-kaikille-wordpress-viesteille-sivuille-php-n-avulla\/","title":{"rendered":"Kuinka luoda arkistosivu (yhteenveto) kaikille WordPress-viesteille\/sivuille PHP:n avulla?"},"content":{"rendered":"<p>Olen juuri luonut kaksi yhteenvetosivua kahdelle blogilleni: <a href=\"https:\/\/helloacm.com\/archives-of-pagesposts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/helloacm.com\/archives-of-pagesposts\/<\/a> ja <a href=\"https:\/\/www.codingforspeed.com\/archives-of-pagesposts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/www.codingforspeed.com\/archives-of-pagesposts\/<\/a>.<\/p>\n<p>Molemmilla sivuilla kaikki artikkelit (mukaan lukien sivut) on lajiteltu kuukausien mukaan. Kunkin postauksen kommenttien m\u00e4\u00e4r\u00e4 lasketaan ja tulostetaan julkaisun otsikon j\u00e4lkeen suluissa.<\/p>\n<p>T\u00e4m\u00e4 voi olla hyv\u00e4 listata kaikki artikkelit\/sivut k\u00e4ytt\u00e4jille ja my\u00f6s hakukoneille, joten t\u00e4m\u00e4 sivu toimii my\u00f6s sivustokartana.<\/p>\n<p>Kuten n\u00e4et yhteenvetosivulta, se tulostaa ensin viestien\/sivujen kokonaism\u00e4\u00e4r\u00e4n, ja jokaiselle kuukaudelle (vain jos kyseisen\u00e4 kuukautena on julkaistu v\u00e4hint\u00e4\u00e4n postaus\/sivu) se luo sisennettyj\u00e4 linkkej\u00e4.<\/p>\n<p>Joten miten aiomme saavuttaa t\u00e4m\u00e4n? Ensinn\u00e4kin WordPressiss\u00e4 tarvitset joitain laajennuksia, jotta voit sis\u00e4llytt\u00e4\u00e4 PHP-koodin viesteihin\/sivuihin. Siirry WordPressin ohjauspaneeliin kirjautumisen j\u00e4lkeen ja siirry kohtaan Plugins ja &quot;Add New&quot;. Hae &quot;Include PHP&quot; ja l\u00f6yd\u00e4t monia vaihtoehtoja.<\/p>\n<p>Kopioi ja liit\u00e4 sitten seuraava PHP-koodi yhdeksi PHP-tiedostoksi teeman juurihakemistoon.<\/p>\n<pre><code>\/\/ &lt;a class=\"vglnk\" target=\"_blank\" href=\"http:\/\/helloacm.com\" rel=\"nofollow\"&gt;&lt;span&gt;helloacm&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;\/a&gt;\n\u00a0 global $wpdb;\n\u00a0 $query = \"select count(1) from `wp_posts` where (post_type = 'page' or post_type = 'post') and `post_status` = 'publish'\";\n\u00a0 $total = $wpdb-&gt;get_var($query);\n\u00a0 echo \"&lt;h2&gt;Archives&lt;\/h2&gt;\";\n\u00a0 $query = \"select concat(year(`post_date`), '-', month(`post_date`)) as `month`, count(1) as `cnt` from `wp_posts` where (post_type='page' or post_type='post') and `post_status` = 'publish' group by `month` order by `post_date` desc\";\n\u00a0 $result = $wpdb-&gt;get_results($query);\n\u00a0 echo \"&lt;ul&gt;\";\n\u00a0 if ($result) {\n\u00a0 \u00a0 foreach ($result as $month) {\n\u00a0 \u00a0 \u00a0 echo \"&lt;li&gt;\".$month-&gt;month.\" (\".$month-&gt;cnt.\")&lt;\/li&gt;\"; \u00a0\n\u00a0 \u00a0 \u00a0 $m = explode('-', $month-&gt;month);\n\u00a0 \u00a0 \u00a0 $y = $m[0];\n\u00a0 \u00a0 \u00a0 $m = $m[1];\n\u00a0 \u00a0 \u00a0 $q = \"select `post_name`, `post_title`, day(`post_date`) as `day`, `id` from `wp_posts` where (post_type='page' or post_type='post') and `post_status` = 'publish' and month(`post_date`)='$m' and year(`post_date`)='$y' order by `post_date` desc\";\n\u00a0 \u00a0 \u00a0 $r = $wpdb-&gt;get_results($q);\n\u00a0 \u00a0 \u00a0 if ($r) {\n\u00a0 \u00a0 \u00a0 \u00a0 echo \"&lt;ul&gt;\";\n\u00a0 \u00a0 \u00a0 \u00a0 foreach ($r as $post) {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 $cnt = $wpdb-&gt;get_var(\"select count(1) from `wp_comments` where `comment_approved`=1 and `comment_post_ID` = \".$post-&gt;id);\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 if (!$cnt) $cnt = 0; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 echo \"&lt;li&gt;\".$post-&gt;day.\": &lt;a title='\".htmlentities($post-&gt;post_title, ENT_QUOTES).\"' href='&lt;a class=\"vglnk\" target=\"_blank\" href=\"https:\/\/helloacm.com\/\".$post-\" rel=\"nofollow\"&gt;&lt;span&gt;https&lt;\/span&gt;&lt;span&gt;:\/\/&lt;\/span&gt;&lt;span&gt;helloacm&lt;\/span&gt;&lt;span&gt;.&lt;\/span&gt;&lt;span&gt;com&lt;\/span&gt;&lt;span&gt;\/\".$&lt;\/span&gt;&lt;span&gt;post&lt;\/span&gt;&lt;span&gt;-&lt;\/span&gt;&lt;\/a&gt;&gt;post_name.\"\/'&gt;\".$post-&gt;post_title.\"&lt;\/a&gt; ($cnt)&lt;\/li&gt;\"; \u00a0\n\u00a0 \u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 \u00a0 \u00a0 echo \"&lt;\/ul&gt;\";\n\u00a0 \u00a0 \u00a0 }\n\u00a0 \u00a0 } \u00a0\n\u00a0 }\n\u00a0 echo \"&lt;\/ul&gt;\";<\/code><\/pre>\n<p>Algoritmi t\u00e4ss\u00e4 on ryhmitell\u00e4 vuosi-kuukausien mukaan SQL:ss\u00e4 ja silmukalla joka kuukausi ja saada kaikki kyseisen kuukauden viestit\/sivut. K\u00e4yt\u00e4 globaalia muuttujaa <strong>$wpdb<\/strong> SQL-k\u00e4skyn suorittamiseen. K\u00e4yt\u00e4 <strong>parametria get_var<\/strong> yhden muuttujan SQL-k\u00e4skyihin, kuten <strong>select count(1)<\/strong>, ja k\u00e4yt\u00e4 <strong>get_results<\/strong> -parametria useille riveille.<\/p>\n<p>Muuta wordpress-taulukon nimi <strong>wp_posts<\/strong>, jos etuliite ei ole <strong>wp_<\/strong>. Voit kuitenkin k\u00e4ytt\u00e4\u00e4 <strong>$wpdb-&gt;postsia<\/strong> saadaksesi viestitaulukon nimen, mik\u00e4 on parempi tapa. Suodata viestit\/sivut muuttamalla vastaavat SQL-lauseet (jos syy) vastaavasti.<\/p>\n<p>Lis\u00e4ksi Facebook-tykk\u00e4ykset lasketaan ja sis\u00e4llytet\u00e4\u00e4n my\u00f6s suluihin. T\u00e4t\u00e4 varten sinun on luotava toinen taulukko, jossa on avainpari artikkelitunnukselle ja tykk\u00e4ysnumerolle. Sinun on m\u00e4\u00e4ritett\u00e4v\u00e4 <a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a>, joka py\u00f6rii ehk\u00e4 kerran tunnissa p\u00e4ivitt\u00e4\u00e4ksesi jokaisen julkaisun Facebook-tykk\u00e4ykset (tai muut sosiaaliset verkostot). T\u00e4m\u00e4 k\u00e4sitell\u00e4\u00e4n toisessa erillisess\u00e4 opetusohjelmassa.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kuinka luoda arkistosivu (yhteenveto) kaikille WordPress-viesteille\/sivuille PHP:n avulla?<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[895,917,834,843,803,864],"tags":[1166],"class_list":["post-233002","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koodi","category-muut","category-opas-aloittelijoille","category-opetusohjelmia","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233002","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=233002"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233002\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}