graphicno 77 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 (ویرایش شده) با سلام خدمت کاربران و اساتید محترم انجمنبه مشکلی بر خوردممن از کد زیر برای نمایش لیست 5 کاربر برتر سایت بر اساس امتیاز آنها استفاده میکنم<?php foreach ( get_users('&orderby=user_point &number=5') as $user ) : ?> <li><a><?php echo $user->display_name; ?> امتیاز : (<?php $get_user_point = get_user_point($user->ID);?><?php echo $get_user_point; ?>)</a></li><?php endforeach; ?>اما کد به درستی عمل نمیکند و کاربران را مرتب نشان نمیدهد به این صورت که کاربری که امتیاز بیشتر را دارد در اول لیست قرار نمیگیرد و در هر صورت مدیر سایت در اول لیست قرار میگیرد با اینکه امتیاز کمتری دارد به شکل زیر :ممنون میشم راهمنایی کنید چطور این مشکل رو حل کنم.با تشکر ویرایش شده مرداد 93 توسط graphicno نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 خوب برای اینکه نمی تونید به این ترتیب سورت بگیرید برای سورت گرفتن اول باید مقدار user_point را در یک متای کاربری ذخیره کنید و بعد ضمن اینکه نام متا را در کوئری بیارید مقدار orderby را هم meta_value بگذارید امتیاز دهیتون بر اساس آموزش همین سایته؟ نحوه ی امتیاز دهی را بفرمایید تا بشه بهتر راهنمایی کرد 1 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 این کد را تست کنید :<?phpglobal $user_ID;$get_user_point = get_user_point($user->ID);if(is_user_logged_in() and $get_user_point>0) {remove_user_meta($user_ID, 'user_point');add_user_meta($user_ID, 'user_point', $get_user_point, false);//1$user_point = get_user_meta($user_ID, 'user_point', true);//echo $user_point;//2}?><?php foreach ( get_users('meta_name=user_point&orderby=meta_value&number=5') as $user ) : ?><li><a><?php echo $user->display_name; ?> امتیاز : (<?php echo $user_point; ?>)</a></li><?php endforeach; ?> 1 نقل قول لینک به ارسال
graphicno 77 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 (ویرایش شده) بله استاد به صورت آموزشی هست که توسط خود شما در انجمن قرار گرفتهکد را تست کردم از این لاین اشکال گرفت و قالب به درستی بارگذاری نشد:remove_user_meta($user_ID, 'user_point');به این صورت هست ارور:<b>Fatal error</b>: Call to undefined function remove_user_meta() in <b> ویرایش شده مرداد 93 توسط graphicno نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 خوب حق داره من تابع را اشتباه نوشتم delete_user_meta($user_ID, 'user_point'); 2 نقل قول لینک به ارسال
graphicno 77 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 کد عمل نکرد هیچ کاربری رو نشون نمیده.. نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 خوب پس این مراحل را انجام بدید 1. یک قالب برگه با کدهای زیر بسازید <?php/*template name: points*/?><!DOCTYPE html><html dir="rtl"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ><title></title></head><body><?php$args = array ('order' => 'DESC','orderby' => 'post_count',);$user_query = new WP_User_Query( $args );if ( ! empty( $user_query->results ) ) {echo '<ul>';foreach ( $user_query->results as $user ) {$point = get_user_point($user->ID);if(get_user_meta($user->ID, 'user_point')) {update_user_meta($user->ID, 'user_point', $point);}else {add_user_meta($user->ID, 'user_point', $point);}?><li><a href="<?php echo home_url('/?author='.$user->ID);?>"><?php echo $user->display_name; ?> <small> امتیاز : (<?php echo get_user_meta($user->ID, 'user_point', true); ?>)</small></a></li><?php }echo '</ul>';echo 'ok';}else {echo 'Not found';}$args = array ('number' => '5','order' => 'DESC','meta_key' => 'user_point','meta_type' => 'NUMERIC','orderby' => 'meta_value',);// The User Query$user_query = new WP_User_Query( $args );// The User Loopif ( ! empty( $user_query->results ) ) {echo '<ol>';foreach ( $user_query->results as $user ) { ?><li><a href="<?php echo home_url('/?author='.$user->ID);?>"><?php echo $user->display_name; ?> امتیاز : (<?php echo get_user_meta($user->ID, 'user_point', true); ?>)</a></li><?php }echo '</ol>';}?><style type="text/css">body {counter-reset:olli; }ul,ol,li {padding:0;margin:0;}li {display:inline-block;width:30%;}ol li {counter-increment:olli;}ol li:before {content:counter(olli)'.';}</style></body></html>و از طریق پیشخوان برگه ها برگه جدید یک برگه با این قالب درست کنید و برگه را یکبار باز کنید تا برای کاربران قبلی متا ساخته بشه برای اینکه توی مصرف منابع به مشکل نخورید پیشنهاد می کنم هر چند روز یکبار مثلا ده روز یکبار همین برگه را یکبار لود کنید تا امتیاز ها به روز شود و الا این کد را هم به header.php اضافه کنید <?phpglobal $user_ID;if(is_user_logged_in()) :$point = get_user_point($user_ID);if(get_user_meta($user_ID, 'user_point')) {update_user_meta($user_ID, 'user_point', $point);}else {add_user_meta($user_ID, 'user_point', $point);}endif; ?>و این کوئری را هم در محل نمایش <?php$args = array ('number' => '5','order' => 'DESC','meta_key' => 'user_point','meta_type' => 'NUMERIC','orderby' => 'meta_value',);$user_query = new WP_User_Query( $args );if ( ! empty( $user_query->results ) ) {echo '<ul>';foreach ( $user_query->results as $user ) { ?><li><a href="<?php echo home_url('/?author='.$user->ID);?>"><?php echo $user->display_name; ?> امتیاز : (<?php echo get_user_meta($user->ID, 'user_point', true); ?>)</a></li><?php }echo '</ul>';}?> 3 نقل قول لینک به ارسال
graphicno 77 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 (ویرایش شده) خیلی خیلی ممنونم استاد, مشکل حل شد.امیدوارم تو تمام مراحل زندگی موفق و پیروز باشید.فقط یک مورد: همانطور که شما عرض کردید برای اینکه اطلاعات بروز بشه باید برگه رو لود کنم در غیر اینصورت اون کد رو به فایل header.php اضافه کنم.من اون کد رو به فایل header.php اضافه کردم تا نیازی به لود برگه نباشه ولی عمل نمیکنه و باز هم باید برگه رو لود کنم تا اطلاعات بروز بشهمشکل مهم و خاصی نیست ولی اگر امکان بروز رسانی اطلاعات به صورت خودکار بود خیلی بهتر میشدولی باز هم از شما تشکر میکنم بایت وقتی که برای حل مشکل بنده گذاشتید.براتون آروزی موفقیت دارم ویرایش شده مرداد 93 توسط graphicno 2 نقل قول لینک به ارسال
imanfakhar 26231 ارسال شده در مرداد 93 گزارش بازنشر ارسال شده در مرداد 93 اون کد در صورتی عمل میب کنه که کاربر وارد سایت بشه وقتی یکبار برگه را لود کنید اطلاعات همه به روز می شه مسلما امتیاز بعدی را کاربر وقتی می گیره که دوباره وارد سایت بشه مطلبی بگذاره یا نظری بده که در این صورت هم با هدر به روز می شه و الا که امتیازش تغییری نکرده و امتیاز قبلی براش باید اعمال بشه که می شه 1 نقل قول لینک به ارسال
graphicno 77 ارسال شده در مرداد 93 مالک گزارش بازنشر ارسال شده در مرداد 93 بله درسته الان متوجه منظور شما شدم.خیلی ممنونم نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .