در آموزش نمایش مطالب پربازدید در وردپرس ، قصد داریم به شما نشان بدیم چگونه محبوب ترین پست ها را بر اساس تعداد بازدید بدون افزونه در هر کجایی از سایت که دوست داشتید ، نمایش بدید.
مثالی از کد ما برای نمایش پربازدید ترین پست ها در وردپرس در تصویر زیر می بینید.
اول از همه ، نیاز داریم که یک تابع برای تشخیص تعداد نمایش پست ها ما و ذخیره هر کدام در یک فیلد سفارشی برای هر مطلب ، ایجاد کنیم . برای اینکار ، کد زیر را در فایل functions.php قالب فعلی خود قرار بدید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function np_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); |
حالا که تابع را ساختیم ، باید آن را در صفحه single post که معمولا به اسم single.php است ، فراخوانی کنیم . با این روش تابع ما دقیقا تعداد بازدید هر پست را دریافت می کنیم . برای اینکار ، باید کد زیر را در حلقه ای که اطلاعات پست های شما درون آن fetch می شود قرار بددید.
1 |
np_set_post_views(get_the_ID()); |
اگر از چایلد تم (child theme) یا هر چیزی که کار شما را راحت تر می کند ، استفاده می کنید ، پس باید tracker را با استفاده از هوک wp_head را در هدر خود قرار بدید . بنابراین تابع زیر را در فایل functions.php قالب خود اضافه کنید.
1 2 3 4 5 6 7 8 9 |
function np_track_post_views ($post_id) { if ( !is_single() ) return; if ( empty ( $post_id) ) { global $post; $post_id = $post->ID; } np_set_post_views($post_id); } add_action( 'wp_head', 'np_track_post_views'); |
همین که کد را اضافه و ذخیره کردید ، هر بار که یک کاربر از پست شما بازدید می کند ، فیلد سفارشی که ساختیم آپدیت می شود .
نکته : اگر از پلاگین های کش (caching plugin) استفاده می کنید ، این تکنیک به طور پیش فرض کار نخواهد کرد . ما از پلاگین W3 Total Cache استفاده می کنیم که قابلیتی به نام Fargmented Caching دارد . می توانید از آن برای حل مشکل استفاده کنید . بنابراین نیاز دارید این تغییر را لحاظ کنید.
1 |
<!-- mfunc np_set_post_views($post_id); --><!-- /mfunc --> |
حالا . می توانید تمام کارهای جالب مثل نمایش تعداد بازدید مطالب ، یا نمایش مطالب پربازدید در وردپرس را به راحتی انجام بدید .
کد نمایش مطالب پربازدید در وردپرس
اگر قصد نمایش تعداد بازدید پست را در صفحه مطلب مورد نظر دارید ، پس باید کد زیر را در فایل functions.php خود اضافه کنید .
1 2 3 4 5 6 7 8 9 10 |
function np_get_post_views($postID){ $count_key = 'np_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 |
np_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' => 'np_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ); while ( $popularpost->have_posts() ) : $popularpost->the_post(); the_title(); endwhile; ?> |
اگر از پلاگین هایی مثل wp-postviews استفاده می کنید کافیست تابع مورد نظر را با تابع np_post_views_count جایگزین کنید
پارامتر های دیگر WP_Query مثل بازه زمانی را می توانید از codex وردپرس ببینید.
موفق باشید.
سلام,خسته نباشید استاد شفیعی یک سوالی داشتم من میخوام بیشترین بازید ها رو توی یک بازه زمانی معین بگیرم میدونم برای این کار باید یک جدول در دیتابیس تعریف کنم و به اونجا کوئری بزنم اما نمی دونم زمان رو چجوری به جدول بفمونم بعد کوئری به جدول بزنم وداخل کوئری اون زمانی رو که میخوام بگیرم میشه در این مورد راهنماییم کنید