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

نمایش تعداد بازدیدهای هر مطلب سایت به صورت جداگانه هم به کاربران کمک می کند که مطالب خوب و بد را از هم تشخیص دهند و هم معیاری برای ارزش گذاری مطالب است. در این مطلب یاد میگیریم بدون استفاده از افزونه، در وردپرس تعداد بازدیدها و تعداد بازدیدکننده های یکتا (یعنی تعداد کاربرهایی که یک مطلب را مشاهده کرده اند)‌ را برای هر مطلب نمایش دهیم.

برای اینکار کافیه از کدهای زیر استفاده کنیم که در ادامه توضیح می دیم این کدها چطور کار میکنند.

function setPostViews($postID) {
	$user_ip = $_SERVER['REMOTE_ADDR']; //retrieve the current IP address of the visitor
	$key = $user_ip . 'x' . $postID; //combine post ID & IP to form unique key
	$value = array($user_ip, $postID); // store post ID & IP as separate values (see note)
	$visited = get_transient($key); //get transient and store in variable

	$count_key = 'nonuniqueviews';
	$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);
	}

	//check to see if the Post ID/IP ($key) address is currently stored as a transient
	if ( false === ( $visited ) ) {
		set_transient( $key, $value, 60*60*1 );

		// now run post views function
		$count_key = 'views';
		$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++;
			do_action('unique_postview_increase');
			update_post_meta($postID, $count_key, $count);
		}
	}
}

در تابع بالا ما با استفاده از IP، کاربران را به صورت یکتا می شماریم. بعد دو post_meta تعریف می کنیم یکی به اسم views که تعداد بازدیدکننده ها را می شمارد و یکی nonuniqueviews که بازدیدها را می شمارد. در کد بالا در قسمت set_transient می توانید مشخص کنید که بعد از چه زمانی دوباره بازدید یک کاربر، شمرده می شود. مثلا در این کد 60*60*1 وارد شده که یعنی بعد از ۱ ساعت، اگر یک کاربر دوباره از مطلب بازدید کند، بازدیدکننده ی جدید محسوب می شود.

این کد را باید در فایل functions.php قالب وردپرس خود قرار دهید.

حالا باید فایل single.php را باز کنید و در انتهای آن کد زیر را وارد کنید:

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

در اینجا ما تابعی که بالاتر نوشتیم را صدا می کنیم تا کار خود را انجام دهد.

از حالا به بعد بازدیدهای مطالب شمرده می شود. برای نمایش این بازدیدها در سایت، کافی است تابع زیر را به functions.php اضافه کنید:

function getPostViews($postID){
	$count_key = 'nonuniqueviews';
	$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 بازدید';
	}
	return $count . 'بازدید';
}

کار این تابع خیلی ساده است! فقط post_meta هایی که در تابع اول تعریف کردیم را میگیرد و آن ها را نمایش می دهد. البته این تابع فقط تعداد بازدیدها (یعنی nonuniqueviews را نمایش می دهد. اگر می خواهید تعداد بازدیدکننده ها را نمایش دهید، کافی است به جای nonuniqueviews در کد بالا، بنویسید views

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

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

امیدوارم این مطلب مفید باشه. اگه سوالی هست بپرسید

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

<