Başlangıç seviyesindeki okuyucularımızın çoğu kısa süre içinde WordPress tem alarını değiştirmeye başlıyor, bu yüzden başlamalarına yardımcı olmak için bir WordPress tema hile sayfamız var. Bu da yeni kullanıcılar için bazı ilginç zorlukları beraberinde getiriyor. Böyle bir okuyucumuz geçenlerde bize WordPress’te geçen haftanın yazılarının nasıl görüntüleneceğini sordu. Ana sayfalarına bir önceki haftanın yazılarını gösteren bir bölüm eklemek istiyorlardı. Bu makalede, WordPress’te geçen haftanın gönderilerini nasıl görüntüleyeceğinizi göstereceğiz.
Önceki haftanın gönderilerini nasıl görüntüleyeceğinizi göstermeden önce, WP_Query kullanarak mevcut haftanın gönderilerini nasıl görüntüleyebileceğinize bir göz atalım. Aşağıdaki kodu kopyalayıp temanızın functions.php dosyasına veya siteye özel bir eklentiye yapıştırın.
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; }
Yukarıdaki örnek kodda, önce geçerli haftayı ve yılı bulduk. Daha sonra bu değerleri WP_Query’de mevcut haftadaki gönderileri görüntülemek için kullandık. Şimdi tek yapmanız gereken tema dosyanızda gönderileri görüntülemek istediğiniz yere <?php wpb_this_week(); ?>
eklemek.
Bu basitti, değil mi? Şimdi geçen haftanın gönderilerini görüntülemek için tek yapmanız gereken haftanın değerinden 1 eksiltmek. Ancak bu yılın ilk haftasıysa, geçen yıl yerine hafta ve mevcut yıl için 0 elde edersiniz. İşte bu sorunu nasıl çözeceğiniz.
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; }
Yukarıdaki örnek kodda iki kontrol yerleştirdik. İlk kontrol, geçerli haftanın değeri 1 olduğunda son haftanın değerini 52 (bir yılın son haftası) olarak ayarlar. İkinci kontrol, son haftanın değeri 52 olduğunda yılın değerini geçen yıl olarak ayarlar.
Geçen haftanın gönderilerini görüntülemek için tek yapmanız gereken temanızın şablon dosyasına <?php wpb_last_week_posts(); ?>
eklemektir. Ya da bunu bir sayfaya veya widget’a ekleyebilmeniz için bir kısa koda sahip olmak istiyorsanız, bu satırı yukarıda verilen kodun altına eklemeniz yeterlidir.
add_shortcode('lastweek', 'wpb_last_week_posts');
Artık bu kısa kodu bir gönderide, sayfada veya bunun gibi bir widget’ta kullanabilirsiniz:
[lastweek]
Özel sorgular oluşturmak için her zaman WP_Query’ye ihtiyacınız olmadığını lütfen unutmayın. WordPress, son yazıları, arşivleri, yorumları vb. görüntülemenize yardımcı olacak bir avuç işlevle birlikte gelir. Mevcut işlevleri kullanmanın daha kolay bir yolu varsa, kendi sorgularınızı yazmanıza gerçekten gerek yoktur.
Umarız bu makale geçen haftanın yazılarını WordPress’te görüntülemenize yardımcı olmuştur. Kodu deneyin ve ihtiyaçlarınızı karşılayacak şekilde değiştirin. Herhangi bir sorunuz olursa aşağıya yorum bırakarak bize bildirin veya Twitter‘da bize katılın.
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.
Yönetici
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.
Yönetici