{"id":233007,"date":"2023-02-02T15:46:00","date_gmt":"2023-02-02T12:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233007"},"modified":"2022-11-10T18:43:43","modified_gmt":"2022-11-10T15:43:43","slug":"como-criar-uma-pagina-de-arquivos-resumo-para-todas-as-postagens-paginas-do-wordpress-usando-php","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-criar-uma-pagina-de-arquivos-resumo-para-todas-as-postagens-paginas-do-wordpress-usando-php\/","title":{"rendered":"Como criar uma p\u00e1gina de arquivos (resumo) para todas as postagens\/p\u00e1ginas do WordPress usando PHP?"},"content":{"rendered":"\n<p>Acabei de criar duas p\u00e1ginas de resumo para meus dois 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> e <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>Em ambas as p\u00e1ginas, todos os artigos (incluindo p\u00e1ginas) s\u00e3o ordenados por meses. O n\u00famero de coment\u00e1rios para cada post ser\u00e1 contado e impresso ap\u00f3s o t\u00edtulo do post entre colchetes.<\/p>\n<p>Isso pode ser bom para listar todos os artigos\/p\u00e1ginas para usu\u00e1rios e tamb\u00e9m para mecanismos de busca, ent\u00e3o essa p\u00e1gina tamb\u00e9m serve como um mapa do site.<\/p>\n<p>Como voc\u00ea pode ver na p\u00e1gina de resumo, primeiro ele imprime o n\u00famero total de posts\/p\u00e1ginas, e para cada m\u00eas (somente se houver pelo menos um post\/p\u00e1gina publicado naquele m\u00eas), ele ir\u00e1 gerar links recuados.<\/p>\n<p>Ent\u00e3o, como vamos conseguir isso? Em primeiro lugar, dentro do WordPress, voc\u00ea precisaria de alguns plugins para poder incluir c\u00f3digo PHP em posts\/p\u00e1ginas. V\u00e1 para o painel de controle do wordpress depois de fazer o login e navegue at\u00e9 Plugins e &#8216;Adicionar novo&#8217;. Pesquise &#8216;Incluir PHP&#8217; e voc\u00ea encontrar\u00e1 muitas op\u00e7\u00f5es.<\/p>\n<p>Em seguida, copie e cole o seguinte c\u00f3digo PHP em um \u00fanico arquivo PHP, no diret\u00f3rio raiz do tema.<\/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>O algoritmo aqui \u00e9 agrupar por ano-m\u00eas em SQL e fazer um loop a cada m\u00eas e obter todas as postagens\/p\u00e1ginas desse m\u00eas. Use a vari\u00e1vel global <strong>$wpdb<\/strong> para executar a instru\u00e7\u00e3o SQL. Use <strong>get_var<\/strong> para instru\u00e7\u00f5es SQL de vari\u00e1vel \u00fanica, como <strong>select count(1)<\/strong> e use <strong>get_results<\/strong> para v\u00e1rias linhas.<\/p>\n<p>Altere o nome da tabela wordpress <strong>wp_posts<\/strong> se o prefixo n\u00e3o for <strong>wp_<\/strong>. No entanto, voc\u00ea pode usar <strong>$wpdb-&gt;posts<\/strong> para obter o nome da tabela de posts, que \u00e9 um m\u00e9todo melhor. Filtre as postagens\/p\u00e1ginas alterando as instru\u00e7\u00f5es SQL correspondentes (onde causa) de acordo.<\/p>\n<p>Al\u00e9m disso, as curtidas do Facebook s\u00e3o contadas e inclu\u00eddas entre par\u00eanteses. Para fazer isso, voc\u00ea precisar\u00e1 criar outra tabela que tenha o par de chaves para o ID do artigo e o n\u00famero de curtidas. Voc\u00ea precisar\u00e1 configurar um <a href=\"https:\/\/helloacm.com\/crontab-generator\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crontab<\/a> que seja executado talvez uma vez por hora para atualizar as curtidas do facebook (ou outras redes sociais) para cada postagem. Isso ser\u00e1 abordado em outro tutorial separado.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/helloacm.com\" class=\"external external_icon\">helloacm.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como criar uma p\u00e1gina de arquivos (resumo) para todas as postagens\/p\u00e1ginas do WordPress usando 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":[898,837,920,806,846,867],"tags":[1170],"class_list":["post-233007","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-guia-para-iniciantes","category-outro","category-php-8","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233007"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233007\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}