تقریبا همه ی سیستم های مدیریت محتوا قابلیت نمایش ارسالها بر اساس یک بازه ی زمانی خاص را دارند. وردپرس هم همینطور. در وردپرس بدون هیچ دردسری شما میتوانید آرشیو ماهانه، آرشیو دسته بندی، آرشیو نویسنده و … داشته باشید و بدون هیچ مشکلی این آرشیو ها را در سایت خود نمایش دهید. حالا سوال اینجاست که اگر نیاز به یک آرشیو هفتگی داشته باشید باید چه کار کنید؟ مثلا اگر بخواهید همه ی نوشته های مربوط به این هفته یا هفته ی گذشته را نمایش دهید راه حل چیست؟ فری اسکریپت در آموزش امروز دقیقا راه حل انجام همین کار، یعنی نمایش نوشته های این هفته و یا هفته ی گذشته، را به شما آموزش خواهد داد.
پیاده سازی این کد ساده است و در آن پیچیدگی خاصی وجود ندارد. برای انجام این کار از WP_Query استفاده خواهیم کرد. کافی است کد زیر را در فایل functions.php قالبتان قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function mrcode_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; } |
کاری که در کد بالا انجام داده ایم این است که ابتدا هفته و سال فعلی را به دست آورده ایم و سپس همین مقادیر را در WP_Query مورد استفاده قرار داده ایم تا بتوانیم نوشته های این هفته را به نمایش در بیاوریم. حالا برای استفاده از تابعی ای که همین الان نوشتیم، تنها کاری که لازم است انجام دهید این است که در هر جای قالبتان که مایل هستید این نوشته ها به نمایش در بیایند، کد زیر را قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
function mrcode_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; } |
کاری که در کد بالا انجام داده ایم این است که ابتدا بررسی میکنیم که هفته ی فعلی، اولین هفته ی سال نباشد و اگر هفته ی اول سال نبود، بنابراین یکی از مقدار هفته ی فعلی کم میکنیم تا هفته ی قبل بدست بیاید. در غیر این صورت مقدار ۵۲ که هفته ی آخر سال است را به عنوان هفته ی گذشته برمیگزینیم و مقدار سال را نیز بر همین اساس در ادامه تنظیم میکنیم. همانطور که میبینید، مشکلمان به سادگی حل شد. حالا برای نمایش نوشته های هفته ی گذشته، در محل مورد نظر، کد زیر را قرار میدهیم:
1 |
<?php mrcode_last_week_posts(); ?> |
کار ما تمام شده است، همانطور که دیدید کار ساده ای بود و به راحتی ما را به هدفمان رساند. البته حتما خودتان به خوبی میدانید که میتوانید با تعریف CSS دلخواه خود، نمای خروجی این کد را به شکل مورد نظر خود در بیاورید تا با قالبتان سازگاری کامل داشته باشد.