در این آموزش قصد داریم با ساخت سه تابع ساده سه امکان را به قالب طراحی شده خود اضافه کنیم

۱. نمایش تعداد مطالب ارسال شده توسط هر کاربر

می دونیم که در وردپرس  می توان با تابع

<?php the_author_posts(); ?>

تعداد مطالب ارسالی نویسنده هر مطلب را نمایش داد  اما این تابع فقط در حلقه مطالب کاربرد داره و پارامتری هم برای تنظیم خارج از حلقه نداره و  صرفا چاپ کننده تعداد مطالب است و اجازه محاسبه را به ما نمی دهد .

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

تذکر : قبل از اعمال هر تغییری ابتدا از فایل functions.php  قالب خود بک آپ تهیه نمایید

   function get_user_posts_count($user_ID){
$args = array('author' => $user_ID, 'posts_per_page' => -۱);
$the_query = new WP_Query( $args );
if ($the_query->post_count > ۰){
return $the_query->post_count;
}
else{
return 0;
}
}

۲. نمایش تعداد نظرات هر کاربر

با اضافه نمودن کد زیر هم می توان به راحتی تعداد نظرات هر کاربر را محاسبه نمود  

function get_user_comment_count($user_ID){
global $wpdb;
$where = 'WHERE comment_approved = 1 AND user_id = '.$user_ID;
$comment_counts = $wpdb->get_results("SELECT user_id, COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
GROUP BY user_id
", object);
if ($comment_counts[0]->total > ۰ ){
return $comment_counts[0]->total;
}else{
return 0;
}
}

۳. امتیاز کاربری

حالا با استفاده از دو تابع قبلی می خواهم تابعی ایاد نمایم که به ازای هر مطلب ارسال شده ۳۰ امتیاز به کاربر اعطا کند و بر اساس هر نظری که در سایت می گذارد ۱۰ امتیاز (برای شخصی سازی اعداد ۳۰ و ۱۰ را در کدها تغییر دهید)

برای اینکار کد زیر را در فایل functions.php  کپی نمایید

function get_user_point($user_ID) {
global $wpdb;
$user_posts_count = get_user_posts_count($user_ID);
$user_comment_count = get_user_comment_count($user_ID);
$post_point = $user_posts_count*30;
$comment_point =$user_comment_count*10;
$point = $post_point + $comment_point;
if($point > ۰) {
return $point;
}
else {
return 0;
}
}

حالا نوبت به نحوه چاپ توابعمون در قالب می رسه

همونطور که در توابع مشخصه تابع ما یک متغیر دارد به نام $user_ID این متغیر در حالت دیفالت شماره آی دی کاربر جاری را می گیرد و می تواند در محل هایی مانند سایدبار یا صفحه پروفایل یا پنل کاربری کاربر تعداد مطالب و نظرات و امتیاز کاربر را به خودش نمایش دهد برای اینکار کدهای زیر را به محل دلخواه اضافه کنید

<?php
$user_posts_count = get_user_posts_count($user_ID);
$user_comment_count = get_user_comment_count($user_ID);
$get_user_point = get_user_point($user_ID);
?>
<?php echo $user_posts_count; ?>
<?php echo $user_comment_count; ?>
<?php echo $get_user_point; ?>

اما برای شخصی سازی کافیست که مقدار جدیدی را به متغیر معرفی نمایید به عنوان مثال با قرار دادن کد زیر در داخل حلقه مطالب می توان در زیر هر مطلب مجموع مطالب ارسالی و مجموع نظرات و امتیاز کاربری ارسال کننده مطلب را در کنار مشخصات دیگرش نمایش داد

<?php
$id = get_the_author_meta('ID');
$user_posts_count = get_user_posts_count($id);
$user_comment_count = get_user_comment_count($id);
$get_user_point = get_user_point($id);
?>
<?php echo $user_posts_count; ?>
<?php echo $user_comment_count; ?>
<?php echo $get_user_point; ?>

این آموزش را قبلا در وردپرس پارسی قرار داده بودم



۵ پاسخ برای “نمایش تعداد مطالب و نظرات کاربران و اعطای امتیاز”

موبایلتو شارژ کن