Multi utilizatori ai platformei WordPress incep sa-si modifice temele. Totusi, pentru utilizatorii noi, apar o multime de provocari. Una din ele este si cea prin care se pot afisa articolele saptamanii trecute in WordPress. Cineva doreste sa adauge pe pagina principala o sectiune care afiseaza articolele de saptamana trecuta. In acest articol vom invata cum putem fac acest lucru.
Inainte sa vedem cum sa afisam articolele saptamanii trecute, haideti sa vedem cum putem afisa posturile saptamanii in curs folosind WP_Query. Copy paste la urmatorul cod in fisierul functions.php al temei curente.
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; }
In codul exemplu de mai sus, gasim prima data saptamana curesnta si anul. Folosim mai apoi aceste valori in WP_Query pentru a afisa articolele din saptamana curenta. Acum tot ce trebuie sa facem este sa adaugam <?php wpb_this_week(); ?> in fisierul temei, unde vrem sa afisam aceste posturi.
Simplu nu-i asa? Acum, tot ce trebuie sa facem pentru a afisa articolele saptamanii trecute este sa adaugam -1 la valoarea saptamanii. Totusi, daca este prima saptamana din an, vei primi 0 pentru saptamana si anul curent in loc de anul viitor. Iata cum poti rezolva aceasta 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; }
In codul de mai sus am plasat doua verificari. Prima verificare seteaza valoarea saptamanii trecute la 52 (care este ultima saptamana din an) in timp ce valoarea saptamanii curente este 1. A doua verificare seteaza valoarea anuluil la anul trecut cand valoarea ultimei saptamani este 52.
Pentru a afisa articolele saptamanii trecute, tot ce trebuie sa faci este sa adaugi <?php wpb_last_week_posts(); ?> in fisierul temei tale, acolo unde vrei sa le afisezi.
Deasemenea, daca vrei sa ai un cod scurt pentru a putea adauga posturile saptamanii trecute intr-un widget sau intr-o pagina, pur si simplu adaugi urmatoarea linie la codul de mai sus:
add_shortcode('lastweek', 'wpb_last_week_posts');