
یکی از بخش های مهم هر سایت، بدست آوردن آمار بازدید از مطالب منتشر شده و گاها نمایش آن است. این آمار را در وردپرس، می توان توسط افزونه هایی همچون post veiws و… به دست آورد. اما، امروز آموزشی را تدارک دیده ایم که توسط آن بدون نیاز به هیچ گونه افزونه، به راحتی قادر خواهید بود آمار بازدید از مطالب خود را بدست آورید.
برای این منظور، دوتابع را به صورت زیر تعریف می کنیم (این کدها را در فایل توابع (function.php) قالب خود قرار دهید):
function set_post_views( $postID )
{
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
// delete old 'post_views_count' value.
delete_post_meta( $postID, $count_key );
// add new 'post_views_count' value.
add_post_meta( $postID, $count_key, '0' );
} else {
$count++;
// update old 'post_views_count' value.
update_post_meta( $postID, $count_key, $count );
}
}
function get_post_views( $postID )
{
$count_key = 'post_views_count';
$count = get_post_meta( $postID, $count_key, true );
if($count=='') {
// delete old 'post_views_count' value.
delete_post_meta( $postID, $count_key );
// add new 'post_views_count' value.
add_post_meta( $postID, $count_key, '0' );
return "0 بازدید";
}
return $count.' بازدید';
}این دو تابع با دریافت آی دی هر پست (با تابع get_the_ID که جلوتر به آن خواهیم رسید) به ترتیب کار ثبت و نمایش آمار بازدید از هر مطلب را انجام میدهند.
این دوتابع از شرط هایی ساده بهره گیری کرده اند، به عنوان نمونه، تابع set_post_views با استفاده از تابع پیشفرض وردپرسی get_post_meta آمار ثبت شده ی هر پست را در متغیر $count می ریزد و در صورت خالی نبودن متغیر، شرط دوم اجرا شده و یک واحد به آن اضافه می شود. سپس نوبت به روزرسانی اطلاعات آماری است که این کار هم توسط تابع update_post_meta انجام میگیرد.
جهت آشنایی با توابع پیشفرض استفاده شده می توانید مستندات وردپرس را مطالعه کنید:
- Function Reference/add post meta
- Function Reference/update post meta
- Function Reference/delete post meta
- Function Reference/get post meta
و اما در آخرین مرحله، لازم است تا توابع بالا را فراخوانی و سپس چاپ کنیم. پس به صورت زیر عمل کنید:
مرحله اول:
جهت ثبت اطلاعات، تابع زیر را داخل حلقه (while) در فایل تک نوشته ها (single.php) قرار دهید.
<?php set_post_views (get_the_ID()); ?>
مرحله دوم:
پس از ثبت آمار، نوبت به چاپ اطلاعات میرسد.
بنابراین، از قطعه کد زیر در مکانی که میخواهید اطلاعات آماری نمایش داده شود، استفاده کنید.
<?php echo get_post_views (get_the_ID()); ?>
و به همین سادگی کار به اتمام میرسد…
منبع : دنیای وردپرس و برنامه نویسی – www.alimir.ir
سلام
چطوری میشه یه شمارنده برای بازدید کل ایجاد کرد اونم بدون افزونه؟
توسط reza
ممنونم مطلب خوبی بود
یه سوالی برام پیش امده آقای میرزایی ، آیا با این توابع میشه از آمار بازدید تکراری صرف نظر کرد
منظورم این هست که اگر کسی با یک IP مشخصی از مطلب بازدید کنه و باز هم همون کار رو انجام
بده تنها یک بار ثبت بشه
توسط امیر حسین
ممنون کاربردی بود
فقط یه مشکل هست
مثل اگه کاربر با افزونه wp-post view قبلا با یه قالبی داشته کار میکرده حالا من براش یه قالب دیگه برای زدم کل بازدید های که توسط wp-post-view ثبت شده می پره ایا راهی هست که با این کد کاری کرد که مثل قبلا 1000 تا بازدید داشته این پست با این کد بگه از 1000 شروع کن نه از 0
ممنون می شم راهنماییم کنی
توسط reza
سلام دوست عزیز ببخشید میشه یه نگاهی به آمار سایت من بندازید این کد شما همینقدر جا میگیره تو سمت راست یا بیشتر؟؟
http://hichopoch.ir/توسط هیچ و پوچ
سلام؛ متوجه نشدم! لطفا توضیح بیشتری بدید…
توسط علی میرزائی
واقعا عالی بود ممنون
توسط میلاد
ممنون مطلب مفیدی بود استفاده بردیم
توسط اسد اسماعیلی
قابلی نداشت اسد جان {گل}
توسط علی میرزائی
سلام . خسته نباشید .
این یک باگ بازم داره . اینکه اگر صفحه خود Singleکاربر چندین بار رفرش کنه همینجوری بازم زیاد میشه . نمیشه یکاری کرد نشه ؟ یعنی کاربر فقط بادیدن یکبار پست فقط امار اضافه بشه ؟
ممنون
لطفا راهنمایی کنید
توسط محمد
سلام. این رو نمیشه به عنوان باگ حساب کرد، در واقع سیستم فعلی، فقط تعداد رفرش های صفحه رو -بدون در نظر گرفتن موارد تکراری- ثبت میکنه.
اما میشه با ست کردن کوکی و ذخیره ip کاربران در پایگاه داده، این آمار رو دقیقتر کرد که خب این هم نیاز به کدنویسی مجزا داره.
توسط علی میرزائی
ممنون که جواب دادی ولی بر اساس ای پی هم خب اشتباهه . شاید یکی چند بار به سایت سر بزنه و یک پست رو نگاه کنه . فقط باید یک کاری کرد کد بالا رو که رفرش صفحه Single رفع بشه .
توسط محمد
آی پی رو برای دقیق کردن آمار (یعنی آمار بازدیدکننده ها و نه بازدیدها) مثال زدم و اصلا روش اشتباهی نیست.
وقتی صفحه رفرش میشه، هیچ فرقی با اینکه بازدیدکننده دوباره به همون مطلب برگرده نداره. (دیگه غیر از اینکه نمیشه کاری کرد یا حداقل من اطلاعی ندارم.)
توسط علی میرزائی
عالی .
توسط F5
dadash damet garm hame site ha code hash ba har refresh yeki ezafe mishe tu index vali in code doroste
eyval 😉
توسط javad
ممنون خیلی خوب و مفید بود از شر افزونه wp-post-view خلاص کردی 🙂 راه اندازی وردپرس با یه افزونه کمتر .
توسط علی
سلام علی آقا.
آموزشی که گذاشتید کمی از دیگران باز بهتره ، ولی طوری هست که برای کسانی بدرد میخوره که کاملا توابع رو حفظ هستند و حداقل یک بار قالب درست کردند.علی آقا به این فکر کنید که کاربران زیادی هستند که به توضیح بیشتری نیاز دارند.من طبق آموزش شما کامل و با دقت عمل کردم ولی هیچ اتفاقی در هیچ کجای سایت نمیوفته.
سوالاتم رو مطرح میکنم.اگر امکانش و داشتید و صلاح دونستید ممنون میشم کمکم کنید.
این نوشته ها برای فانکشن رو دقیقا بین چه خطوطی باید جای گذاری کنم؟؟؟
=========================================
در مرحله اول این تابع() در بین کدامیک از خطهای زیر باید قرار بگیره.فرمودید در حلقه while ..حلقه while خودش مگر یک تابع نیست؟
منظور شما اینه که تابعی که فرمودید رو در وسط یک تابع دیگه باید جای گذاری کنم؟؟
در سینگل من while به شکل زیر هست.
و سپس برای مرحله دوم فرمودید:
پس از ثبت آمار، نوبت به چاپ اطلاعات میرسد.
بنابراین، از قطعه کد زیر در مکانی که میخواهید اطلاعات آماری نمایش داده شود، استفاده کنید.
من میخوام بالای هر پست چه در صفحه اصلی و چه در صفحه سینگل مطلب در قسمتی که نویسنده و دیدگاه و تاریخ ارسال پست هست تعداد بازدید نمایش داده بشه.چطوری و در کدام فایلها باید این مکان رو پیدا کنم.
تمام اونهایی که پیدا کردم و گذاشتم ، هیچ اتفاقی نیوفتاده.
دو روزه درگیرم.
عذر خواهی میکنم که این همه حرف زدم.جایی نیست سوال کنم که پاسخ بدن.
اگر هم زحمت زیادی نباشه و فکر میکنید امکانش هست فایلهای لازم رو براتون ارسال میکنم که این کدها را درونشون قرار بدید.متشکرم.
توسط بابک
با سلاتم و درود مجدد آقا علی اگه ممکنه شماره موبایلتون رو برام ایمیل کنید تا باهم صحبت کنیم یا از طریق ایمیل .با تشکر
توسط رحمت حاجی سعدین
آقا رحمت، کلا با ایمیل مشکل داریا!!! 🙂 فرم تماس که هست، خوب یه ایمیل بزن تا منم پاسخ رو برای بار چندم بهت ایمیل کنم…
توسط علی میرزائی
باعرض سلام وخسته نباشىد خدمت استادگلم اقاى على مىرزاىى. اقا على منم به نوابه ى خودم از زحمات بى پابانتون تشکر مى گنم .اقا على خىلى کامنت دادم مى خوام اگه بشه قالب ساىتتون رو بهم بفروشىد.خواهس مى کنم جوابمو بدىد. بازم ازتون تسکر مى کنپ ببخشىد اگه غلط املاىى داشتم مرحمت زىاد
توسط اتل
ممنونم رحمت جان! عزیز دلم، منم هر دفعه پاسخ کامنت های شما رو دادم. منتها شما انگار اصلا پاسخ ها رو نمیخونید!!! (باز هم تکرار میکنم، در مورد فروش قالب قبلی، باید بهم ایمیل بزنید تا در اونجا مفصل صحبت کنیم.)
توسط علی میرزائی
سلام ممنون
یه سوال اگر بخواهیم از این کد در صفحه index استفاده کنیم به چه صورت چون من برای خلاصه مطالب در صفحه index قرار دادم حالا هر وقت صفحه رو ریفرش میکنم یک بازدید به تمام پست ها اضافه میکنه بدون اینکه وارد پست ها بشم !!!!
توسط علی
سلام، برای فایل index فقط باید از تابع get_post_views استفاده کنید.
توسط علی میرزائی
سلام .
آره ! یه سر به وب بزنید ! بعضی از پست ها رو 0 میزنه 🙁 ! ولی بقیه اش خوب کار می کنه 🙂
توسط Android
سلام خوبید ؟
خسته نباشید 🙂
دست شما درد نکنه !
من هر کاری می کنم 0 بازدید میزنه 😐
میشه کمک کنید …!!!
توسط Android
سلام،
آیا مراحل گفته شده رو با دقت انجام دادید؟!؟ تابع set_post_views داخل حلقه است؟!؟
توسط علی میرزائی
بسیار ممنون دوست عزیز
توسط اکبر قره باغی
سلام زود قضاوت نکنید
این ادرس سایت منه (rapfa.2host.ir) البته دمو سایته
– چطور من میتونم در کنار بخش مطالب محبوبم که در سایتمه تعداد بازدیداشون رو هم نمایش بدم تاکید میکنم فقط در بخش مطالب محبوب البته اینم بگم بدون اضافه کردن افزونه سایتمو یه نیگا کنید متوجه میشید منظورم چیه مطالب محبوبم همچیش تکمیله فقط امار بازدید نداره
راستی تو هر انجمنی هم که مطرحش کردم فایده نداشت جوابای بی سرو ته میدادن
البته اگه افزونه ای هم باشه که امار بازدید رو همراه با عکس و امار بازدید نشون بده هم خوبه
ممنونم
توسط ehsan
باسلام ودرود مجدد به شما . آقا علی لطف کنید قیمیت قالب سایتتون رو برام بنویسید تا ببینم توانایی خریدش رو دارم یا نه . مرحمت زیاد
توسط رحمت حاجی سعدین
توضیحات رو براتون ایمیل کردم، لطفا با اون ایمیل مکاتبه کنید.
توسط علی میرزائی
با سلام و درود مجدد خدمت شما آقا علی . لطف کنید قیمیت قالبتون رو برام بنویسید باتشــــــــــــــــــــکر
توسط رحمت حاجی سعدین