Muitos de nossos leitores iniciantes logo começam a modificar seus temas do WordPress, por isso temos uma folha de dicas de temas do WordPress para ajudá-los a começar. Isso traz alguns desafios interessantes para os novos usuários. Um desses leitores nos perguntou recentemente como exibir as postagens da semana passada no WordPress. Ele só queria adicionar uma seção na página inicial que exibisse as publicações da semana anterior. Neste artigo, mostraremos a você como exibir as postagens da semana anterior no WordPress.
Antes de mostrarmos como exibir as postagens da semana anterior, vamos primeiro dar uma olhada em como exibir as postagens da semana atual usando WP_Query. Copie e cole o código a seguir no arquivo functions.php do seu tema ou em um plug-in específico do site.
function wpb_this_week() { $week = date('W'); $year = date('Y'); $the_query = new WP_Query( 'year=' . $year . '&w=' . $week ); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <h2><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title(); ?> "><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php else: ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; }
No código de exemplo acima, primeiro descobrimos a semana e o ano atuais. Em seguida, usamos esses valores em WP_Query para exibir as publicações da semana atual. Agora, tudo o que você precisa fazer é adicionar <?php wpb_this_week(); ?>
no arquivo do seu tema onde deseja exibir as publicações.
Isso foi simples, não foi? Agora, para exibir as publicações da semana passada, tudo o que você precisa fazer é subtrair 1 do valor da semana. Mas se essa for a primeira semana do ano, você obterá 0 para a semana e o ano atual em vez do ano passado. Veja como corrigir esse problema.
function wpb_last_week_posts() { $thisweek = date('W'); if ($thisweek != 1) : $lastweek = $thisweek - 1; else : $lastweek = 52; endif; $year = date('Y'); if ($lastweek != 52) : $year = date('Y'); else: $year = date('Y') -1; endif; $the_query = new WP_Query( 'year=' . $year . '&w=' . $lastweek ); if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <h2><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title(); ?> "><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php else: ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; }
No código de exemplo acima, colocamos duas verificações. A primeira verificação define o valor da última semana como 52 (que é a última semana em um ano) quando o valor da semana atual é 1. A segunda verificação define o valor do ano como o ano passado quando o valor da última semana é 52.
Para exibir as postagens da semana passada, basta adicionar <?php wpb_last_week_posts(); ?>
ao arquivo de modelo do seu tema onde deseja exibi-las. Ou, se quiser ter um shortcode para poder adicionar isso a uma página ou a um widget, basta adicionar esta linha abaixo do código fornecido acima.
add_shortcode('lastweek', 'wpb_last_week_posts');
Agora você pode usar esse shortcode em um post, página ou widget como este:
[lastweek]
Observe que você nem sempre precisa do WP_Query para criar consultas personalizadas. O WordPress vem com várias funções para ajudá-lo a exibir posts recentes, arquivos, comentários, etc. Se houver uma maneira mais fácil de usar as funções existentes, então você não precisará realmente escrever suas próprias consultas.
Esperamos que este artigo tenha ajudado você a exibir as postagens da semana passada no WordPress. Faça experiências com o código e modifique-o para atender às suas necessidades. Se tiver alguma dúvida, deixe um comentário abaixo ou junte-se a nós no Twitter.
Ali Hesari
This is very useful for me. Thank you.
hitesh
this is very useful for us. keep it
Kenny
This would be great if a YouTube video was made available
Allison
I am curious about when/why I would want to display the week’s posts? On my home page, I display excerpts, so the posts from my past 2 weeks or so are visible. What am I missing here? Thanks!
WPBeginner Support
You don’t need to. But some other website owners may have a layout where they might want to display previous week’s posts separately. This tutorial is aimed to help those users.
Administrador
faisal adil
Awesome
Chris McCoy
you could also take advantage of the new date query http://www.viper007bond.com/2013/08/27/date-queries-in-wordpress-3-point-7/
WPBeginner Support
Yes date_query can also be used to achieve the same goal.
Administrador