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 بله درسته الان متوجه منظور شما شدم.خیلی ممنونم لینک به ارسال
پست های پیشنهاد شده
لطفا برای ارسال دیدگاه وارد شوید
شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید
ورود به حساب کاربری