
پربازدیدترین مطالب بدون افزونه با نون اضافی!
در این نوشته قصد داریم کدی را خدمتتان معرفی کنیم که می تواند به جای یک افزونه به کار برده شود. این نوشته در سایتهای دیگر نیز منتشر شده است اما مطلبی که مفید باشد، دهها بار نیز اگر انتشار یابد باز هم به کار می آید. در این نوشته به شما نشان خواهیم داد که چگونه با این کد، پست های محبوب از لحاظ بازدید یعنی پربازدیدترین مطالب را بدون افزونه در یک سایت وردپرسی به دست آورید و آنها را به نمایش بگذارید.
اولین کاری که باید انجام دهید ساخت فانکشنی است که تعداد بازدیدها از یک نوشته را محاسبه کرده و آن ها را به عنوان یک زمینه دلخواه یا همان Custom Field ذخیره می نماید. به منظور انجام این کار، کد زیر را در فایل functions.php پوسته قالب کپی کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function wpb_set_post_views($postID) { $count_key = 'wpb_post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ $count = 0; delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); }else{ $count++; update_post_meta($postID, $count_key, $count); } } //To keep the count accurate, lets get rid of prefetching remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); |
حال که فانکشن خود را در جای مناسبش قرار دادیم، باید آن را در فایل سینگل فراخوانی کنیم. با این راه، فانکشن دقیقا می داند که کدام نوشته از لحاظ بازدید در رتبه بالاتری قرار می گیرد. برای انجام این عمل، شما باید کد زیر را داخل لوپ قرار دهید.
1 |
wpb_set_post_views(get_the_ID()); |
در صورتی که از پوسته فرزند (Child Theme) استفاده می کنید یا حتی برای راحتی کار خودتان، می بایست فراخوانی این فانکشن را می بایست به دلیل خاصی در هدر استفاده کنید، می بایست کد زیر را در فایل functions.php پوسته اضافه کنید:
1 2 3 4 5 6 7 8 9 |
function wpb_track_post_views ($post_id) { if ( !is_single() ) return; if ( empty ( $post_id) ) { global $post; $post_id = $post->ID; } wpb_set_post_views($post_id); } add_action( 'wp_head', 'wpb_track_post_views'); |
پس از انجام این عمل، پس از هر بار که کاربر از پست دیدن می کند، custom field نیز آپدیت می شود.
حالا شما هر چیزی که برای انجام کارهایی از جمله نمایش تعداد بازدیدهای یک نوشته و یا قرار دادن نوشته ها بر اساس تعداد بازدیدها لازم است را در اختیار دارید. در ادامه چگونگی انجام این اعمال را به شما نشان خواهیم داد.
اگر می خواهید که تعداد بازدیدهای یک نوشته (که معمولا جایی نزدیک به قسمتی است که تعداد دیدگاه را نشان می دهد) را نمایش دهید، اولین کاری که باید به انجام برسانید این است که کد زیر را در فایل functions.php پوسته وارد کنید:
1 2 3 4 5 6 7 8 9 10 |
function wpb_get_post_views($postID){ $count_key = 'wpb_post_views_count'; $count = get_post_meta($postID, $count_key, true); if($count==''){ delete_post_meta($postID, $count_key); add_post_meta($postID, $count_key, '0'); return "0 View"; } return $count.' Views'; } |
سپس کد زیر را داخل لوپ نوشته اضافه نمایید:
1 |
wpb_get_post_views(get_the_ID()); |
به عنوان نون اضافی، اگر هم مایل هستید نوشته ها را براساس تعداد بازدیدها مرتب کنید، می توانید به راحتی با استفاده از پارامتر wp_query post_meta به هدف خود برسید. پایه ای ترین مثالی که می توان از یک لوپ کوئری زد، به شکل زیر خواهد بود:
1 2 3 4 5 6 7 8 |
<?php $popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wpb_post_views_count', 'orderby' => 'wpb_post_views_count', 'order' => 'DESC' ) ); while ( $popularpost->have_posts() ) : $popularpost->the_post(); the_title(); endwhile; ?> |
از این ساده تر؟! همگی می دانیم که یکی از مزیت های وردپرس افزونه های متنوع آن است اما گاهی نیز نیاز است که رو به “کدهای دوست داشتنی” بیاوریم.
وردپرس با طعم فارسی
مفید ، جامع و کامل. ممنون (افزونه ی کمتر وردپرس بهتر )
عالی بود مثل همیشه.تشکر
عالی بود
دنبالش بودم
واقعا ممنون
سلام
یک سوال اگر بخواهیم که پر بازدیترین نوشته های یک دسته ی خاص رو نشون بدیم بایدچه کد هایی رو بزاریم؟
سلام این لوپ چیه من منظورتونو نفهمیدم
ممنون میشم راهنمایی کنید
متشکرم خیلی مفید بود
لوپ یعنی حلقه برنامه
وقتی میخوایم پربازدیدترین مطالب رو نشون بدیم فقط عنوانشون رو میاره و وقتی هم تگ a رو برای گذاشتن لینک قرار میدم قالب به هم می ریزه.لطفا بگین چطوری میشه که به مطالب پر بازدید لینک هم داد؟
سلام
از مطلبتون استفاده کردم و واجب دونستم ازتون تشکر کنم.خیلی خوب و کاربردی بود.تو وبسایتهای فارسی وردپرس کم نظیر هستید.
موفق و پیروز باشید
مرسی مطلب خوبی بود
درود. سپاس برای مطلب مفید شما.
من این کد را در سایت خودم استفاده کردم ولی کار نمیکند لطفا مرا راهنمایی کنید. میخواهم پربازدیدترین مطالب در ساید بار قرار گیرد.خیلی جستجو کردم ولی چیزی نیافتم.لطفا راهنماییم کنید.
سلام
دوست عزیز، من اگر بخوام پربحث ترین مطالب رو نمایش بدم باید چکار کنم؟
ممنون