نمایش تعداد بازدید از مطالب و هم چنین پربازدیدترین ها

24 دی 1392 | آموزش وردپرس | 0 comments

سلام

حتما تو خیلی از وبلاگ ها یا وب سایت ها دیدید که مثلا نوشته تعداد بازدید از پست فلان تا . شاید خود این موضوع خیلی مهم نباشه ولی مثلا اگه بخواید پربازدیدترین مطالب سایتتون رو نشون بدید این قضه براتون مهم میشه .

خب برای این کار اول کد زیر رو تو فایل functions.php قالبتون قرار بدید .

function getPostViews($postID){
    $count_key = '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';
}
function setPostViews($postID) {
    $count_key = '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);
    }
}
// Remove issues with prefetching adding extra views
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0);

حالا کد زیر رو توی حلقه فراخوانی نوشته هاتون قرار بدید . میشه بعد از دستور while . این حلقه توی single.php هستش .

<?php
          setPostViews(get_the_ID());
?>

خب حالا تو همون فایل single.php هر جایی که میخواید تعداد بازدید هاتون نمایش داده بشه کد زیر رو قرار بدید .

<?php
          echo getPostViews(get_the_ID());
?>

این از نمایش تعداد بازدید حالا اگه بخواید مثلا توی نوار کناریتون پربازدید ترین پست ها رو قرار بدید .

این کد رو تو فایل sidebar.php قرار بدید .

 <?php  
      $mostvisited_query = new WP_Query(array(
'meta_key' =>'post_views_count',
'post_type' =>'post',
'order' =>'descending',
'orderby' =>'meta_value_num',
'posts_per_page' =>'20',
        
        'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1        
        ));
        ?>

شما در کد بالا می تونید نوع پست و تعداد پست های نمایش داده شده رو هم تغییر بدید . هم چنین اگه می خواید فقط برای یک دسته خاص هم نشون داده بشه می تونید با اضافه کردن کد زیر مثلا در خط بعد از orderby این کار رو انجام بدید .

'cat' =>'7',

خب حالا باید فراخوانیشون بکنیم . برای این کار مثلا می تونید از کد زیر استفاده کنید .

<ul>
		<?php if($mostvisited_query->have_posts()) : 
while($mostvisited_query->have_posts()) : $mostvisited_query->the_post();?>
<li>

	<a class="<?php echo $extra_class; ?> <?php if(get_post_custom_values('imp')) echo ' '.get_post_meta($post->ID, 'imp', true);?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile;endif;?>
</ul> 
<?php wp_reset_query(); ?>

موفق باشید