نمایش بازدید مطالب وردپرس بدون افزونه
نمایش بازدید مطالب وردپرس به کمک افزونههای مختلفی قابل انجام است اما اگر تمایل به استفاده از پلاگینها ندارید و یا توسعه دهنده قالب هستید، در ادامه با ما همراه باشید تا به سادگی این امکان را با چند قطعه کد به قالب خود اضافه کنید.
دریافت و ذخیره سازی بازدید مطالب
در ابتدا باید تابعی تعریف کنیم که مقدار بازدید هر پست را دریافت و ذخیره سازی کند.
پس کد زیر را به فایل functions.php قالب خود اضافه کنید:
function wintheme_set_post_views($postID) { $count_key = 'wintheme_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.php ، مقدار بازدید هر پست را به آن پاس بدهیم.
برای این کار، کد زیر را در Loop مطالب خود در فایل single.php اضافه کنید (برای مثال، بالای عنوان پست):
wintheme_set_post_views(get_the_ID());
اگر از Child Theme استفاده میکنید و یا میخواهید کار را برای خودتان آسانتر کنید، برای ست کردن بازدید هر پست میتوانید از طریق هوک wp_head این کار را انجام دهید.
پس قطعه کد زیر را به functions.php اضافه کنید:
function wintheme_track_post_views ($post_id) { if ( !is_single() ) return; if ( empty ( $post_id) ) { global $post; $post_id = $post->ID; } wintheme_set_post_views($post_id); } add_action( 'wp_head', 'wintheme_track_post_views');
با افزودن این کد، با هر بار بازدید از مطالب، تعداد بازدید هر پست در دیتابیس بروزرسانی میشود.
نکته: اگر از افزونههای کش استفاده میکنید، این تکنیک در حالت پیشفرض کار نخواهد کرد. در پلاگین W3 Total Cache قابلیتی به نام Fragmented Caching وجود دارد که با استفاده از آن و تغییر کد بالا به صورت زیر، مشکل رفع میشود:
<!-- mfunc wintheme_set_post_views($post_id); --><!-- /mfunc -->
کار ذخیره سازی بازدید هر پست تمام است! حالا میتوانید کارهای مختلفی نظیر نمایش بازدید مطالب و مرتب سازی پستها بر اساس بازدید را انجام دهید.
نمایش بازدید هر پست
اگر قصد نمایش بازدید هر پست در ادامه مطلب یا سایر صفحات سایت خود دارید، ابتدا باید تابع زیر را به functions.php اضافه کنید:
function wintheme_get_post_views($postID){ $count_key = 'wintheme_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'; }
حالا با فراخوانی تابع در حلقه مطالب، میتوانید بازدید هر پست را نمایش دهید.
برای این کار، کد زیر را در Loop مطالب خود قرار دهید (برای مثال، زیر عنوان پست):
wintheme_get_post_views(get_the_ID());
نمایش مطالب پربازدید در سایت
اگر مایل به نمایش مطالب سایت خود بر اساس بازدید هستید، به راحتی میتوانید با استفاده از کلاس wp_query این کار را انجام دهید.
متدوالترین مثال، نمایش پربازدیدترین مطالب سایت است که با قرار دادن کد زیر در محل نمایش مورد نظر (مثلا سایدبار)، قابل انجام است:
<ul> <?php $popularpost = new WP_Query( array( 'posts_per_page' => 4, 'meta_key' => 'wintheme_post_views_count', 'orderby' => 'meta_value_num', 'order' => 'DESC' ) ); while ( $popularpost->have_posts() ) : $popularpost->the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul>
امیدواریم که از این آموزش لذت برده باشید.
نظرات