{"id":233064,"date":"2023-02-02T16:28:00","date_gmt":"2023-02-02T13:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233064"},"modified":"2022-11-10T18:59:28","modified_gmt":"2022-11-10T15:59:28","slug":"comment-creer-une-page-darchives-resume-pour-tous-les-messages-pages-wordpress-en-utilisant-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/comment-creer-une-page-darchives-resume-pour-tous-les-messages-pages-wordpress-en-utilisant-php\/","title":{"rendered":"Comment cr\u00e9er une page d&rsquo;archives (r\u00e9sum\u00e9) pour tous les messages\/pages WordPress en utilisant PHP\u00a0?"},"content":{"rendered":"\n<p>Je viens de cr\u00e9er deux pages r\u00e9capitulatives pour mes deux blogs: <a href=\"https:\/\/helloacm.com\/archives-of-pagesposts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/helloacm.com\/archives-of-pagesposts\/<\/a> et <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>Dans les deux pages, tous les articles (y compris les pages) sont tri\u00e9s par mois. Le nombre de commentaires pour chaque message sera compt\u00e9 et imprim\u00e9 apr\u00e8s le titre du message entre parenth\u00e8ses.<\/p>\n<p>Cela peut \u00eatre utile pour r\u00e9pertorier tous les articles\/pages pour les utilisateurs et pour les moteurs de recherche \u00e9galement, de sorte que cette page sert \u00e9galement de plan du site.<\/p>\n<p>Comme vous pouvez le voir dans la page de r\u00e9sum\u00e9, d&rsquo;abord, il imprime le nombre total de publications\/pages, et pour chaque mois (seulement s&rsquo;il y a au moins une publication\/page publi\u00e9e ce mois-l\u00e0), il g\u00e9n\u00e9rera des liens en retrait.<\/p>\n<p>Alors, comment allons-nous y parvenir? Tout d&rsquo;abord, dans WordPress, vous auriez besoin de quelques plugins pour pouvoir inclure du code PHP dans les publications\/pages. Acc\u00e9dez au panneau de configuration de wordpress apr\u00e8s vous \u00eatre connect\u00e9 et acc\u00e9dez \u00e0 Plugins et \u00ab\u00a0Ajouter un nouveau\u00a0\u00bb. Recherchez \u00ab\u00a0Inclure PHP\u00a0\u00bb et vous trouverez de nombreuses options.<\/p>\n<p>Ensuite, copiez et collez le code PHP suivant dans un seul fichier PHP, sous le r\u00e9pertoire racine du th\u00e8me.<\/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>L&rsquo;algorithme ici consiste \u00e0 regrouper par ann\u00e9e-mois en SQL et \u00e0 boucler chaque mois, et \u00e0 obtenir tous les articles\/pages de ce mois. Utilisez la variable globale <strong>$wpdb<\/strong> pour ex\u00e9cuter l&rsquo;instruction SQL. Utilisez <strong>get_var<\/strong> pour les instructions SQL \u00e0 variable unique telles que <strong>select count(1)<\/strong> et utilisez <strong>get_results<\/strong> pour plusieurs lignes.<\/p>\n<p>Modifiez le nom de la table wordpress <strong>wp_posts<\/strong> si le pr\u00e9fixe n&rsquo;est pas <strong>wp_<\/strong>. Cependant, vous pouvez utiliser <strong>$wpdb-&gt;posts<\/strong> pour obtenir le nom de la table des messages, ce qui est une meilleure m\u00e9thode. Filtrez les publications\/pages en modifiant les instructions SQL correspondantes (o\u00f9 cause) en cons\u00e9quence.<\/p>\n<p>De plus, les likes de Facebook sont \u00e9galement compt\u00e9s et inclus entre parenth\u00e8ses. Pour ce faire, vous devrez cr\u00e9er une autre table contenant la paire de cl\u00e9s pour l&rsquo;identifiant de l&rsquo;article et le num\u00e9ro &quot;J&rsquo;aime&quot;. Vous devrez configurer un <a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a> qui s&rsquo;ex\u00e9cute peut-\u00eatre une fois par heure pour mettre \u00e0 jour les likes Facebook (ou d&rsquo;autres r\u00e9seaux sociaux) pour chaque publication. Cela sera couvert dans un autre tutoriel s\u00e9par\u00e9.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment cr\u00e9er une page d&rsquo;archives (r\u00e9sum\u00e9) pour tous les messages\/pages WordPress en utilisant PHP ?<\/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":[915,893,832,801,841,862],"tags":[1167],"class_list":["post-233064","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-guide-pour-les-debutants","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/233064","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=233064"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/233064\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=233064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=233064"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=233064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}