ที่แล้วๆ มา ผมใช้ WordPress ในการทำเว็บอะไรก็แล้วแต่ เน้นไปที่ความสะดวกสบายไว้ก่อน เช่น การใช้งาน Plugin เพิ่มความสะดวกสบายให้กับตัวเอง แต่พอนานๆ เข้า เริ่มไม่คิดแบบนั้นแล้ว เพราะว่า ยิ่งเรามี Plugin ในระบบมากเท่าไร เว็บเราก็จะช้า และกินทรัพยากรของโฮสมากเท่านั้น และยังเป็นสาเหตุของการถูกแฮคอีกด้วย

wordpress

วันนี้ ผมเอาฟังก์ชั่น wordpress นับจำนวนคนอ่าน บทความแบบง่ายๆ มาให้เอาไปใช้กันครับ โดยที่คุณจะลืมไปเลยว่า Plugin ที่ชื่อ wp_pageview นั้น หน้าตาเป็นอย่างไร

เปิดไฟล์ 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, '1');
        return '1 View';
    }
    return $count.' Views';
}

// function to count views.
function setPostViews($postID) {
    $count_key = 'post_views_count';
    $count = get_post_meta($postID, $count_key, true);
    if($count==''){
        $count = 1;
        delete_post_meta($postID, $count_key);
        add_post_meta($postID, $count_key, '1');
    }else{
        $count++;
        update_post_meta($postID, $count_key, $count);
    }
}

// Add it to a column in WP-Admin - (Optional)
add_filter('manage_posts_columns', 'posts_column_views');
add_action('manage_posts_custom_column', 'posts_custom_column_views',5,2);
function posts_column_views($defaults){
    $defaults['post_views'] = __('Views');
    return $defaults;
}
function posts_custom_column_views($column_name, $id){
    if($column_name === 'post_views'){
        echo getPostViews(get_the_ID());
    }
}

 จากโค้ดด้านบน จะอธิบายคร่าวๆดังนี้นะครับ

  • ฟังก์ชั่น setPostViews() จะทำการ “นับ” หากเราเปิดหน้าบทความนั้นๆขึ้นมา
  • ฟังก์ชั่น getPostViews() จะทำการ “แสดง” ค่าที่นับเข้ามา

งงมั๊ยเอ่ย ถ้างง มาดูกันต่อ

การใช้งานฟังก์ชั่นทั้งสอง setPostViews() และ getPostViews()

ผมยกตัวอย่างในไฟล์ single.php ละกัน

<?php if (have_posts()) : ?> 
<?php setPostViews(get_the_ID()); ?>
<div class="grid_8_bg">
	<?php while (have_posts()) : the_post(); ?> 
	<div class="content">
		<div class="page-breadcrumbs"><?php if(function_exists('bcn_display')){ bcn_display(); }?></div>
		<div class="page-title"><h2><?php the_title(); ?></h2></div>
		<div class="page-detail">
                     <?php echo human_time_diff( get_the_time('U'), current_time('timestamp') ) . ' ago'; ?> </b> (<?php echo getPostViews(get_the_ID()); ?>)
                </div>
		<div class="page-content">
			<?php the_content(''); ?>	
		</div>
		<div class="page-content-tag">
			<span>Tags (คำค้นหา)</span>
			<span class="img-tag"><img src="<?php bloginfo('template_url'); ?>/images/tags.png"/></span><p><?php the_tags( '', ', ', ''); ?></p>
		</div>
		<div class="clear"></div>

	</div>
	<?php endwhile; ?>
</div>
<?php else : ?>
<div>
     <div style="width:640px;text-align:center;padding:50px 10px;font-size:24px;">ขออภัย! ยังไม่มีเนื้อหาสำหรับหมวดนี้....</div>
</div>
<?php  endif; ?>

ลองดูตัวอย่างแล้วงงอีก คอมเม้นต์ถามกันมาได้นะครับ สำหรับการใช้ฟังก์ชั่นทั้งสองนี้ แล้วคุณจะไม่ต้องนึกถึง plugin wp_pageview อีกเลย ลองเอาไปใช้กันดูสำหรับ WordPress : นับจำนวนคนอ่านบทความ แบบไม่ใช้ Plugin

บทความโดย : tsupaman

Comments