4ответ(ов) в теме
на форуме уже было предложено готовое решение. Чтобы не искать, выкладываю здесь код, добавив котрый в файл functions.php плагина или вашего шаблона становиться возможным использование нового шорткода [online-sort-user], который будет выполнять сортировку пользователей именно по их последней активности на сайте:
add_shortcode('online-sort-user','short_online_users_list'); function short_online_users_list($atts, $content = null){ global $post; global $wpdb; //определение текущей страницы if($_GET['navi']) $navi = $_GET['navi']; else $navi=1; //режим поиска пользователей по имени или логину if($_POST['search-user']){ if($_POST['orderuser']==1){ //по имени $args = array( 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'first_name', 'value' => $_POST['search-user'], 'compare' => 'LIKE', ), array( 'key' => 'last_name', 'value' => $_POST['search-user'], 'compare' => 'LIKE', ) ) ); } else{ //по логину $args = array( 'search'=>'*'.$_POST['search-user'].'*'); } //параметр шорткода на запрет отображения пользователя extract(shortcode_atts(array( 'exclude' => 0 ), $atts)); //получение найденных ID $users = get_users($args); foreach($users as $user){ if(++$a>1)$userslst .= ','; $userslst .= $user->ID; } //подсчет разрешенных для отображения пользователей $count_user = $wpdb->get_var("SELECT COUNT(user) FROM ".RCL_PREF."user_action WHERE (user IN ($userslst)) AND (user NOT IN ($exclude))"); //получение списка найденных ID по посещаемости $rcl_action_users = $wpdb->get_results("SELECT user,time_action FROM ".RCL_PREF."user_action WHERE (user IN ($userslst)) AND (user NOT IN ($exclude)) ORDER BY time_action DESC"); } //режим default else{ //параметры шорткода по умолчанию extract(shortcode_atts(array( 'inpage' => 10, 'exclude' => 0 ), $atts)); //подсчет разрешенных для отображения пользователей $count_user = $wpdb->get_var("SELECT COUNT(user) FROM ".RCL_PREF."user_action WHERE user NOT IN ($exclude)"); //определение смещения для страничного вывода $start = ($navi-1)*$inpage; $num_page = ceil($count_user/$inpage); //получение списка ID сортированных по посещаемости $rcl_action_users = $wpdb->get_results("SELECT user,time_action FROM ".RCL_PREF."user_action WHERE user NOT IN ($exclude) ORDER BY time_action DESC LIMIT $start,$inpage"); } //Форма поиска $userlist .=' <form method="post" action=""> <p align="right">Поиск пользователей: <input type="text" name="search-user" value="'.$_POST['search-user'].'"> <select name="orderuser"> <option '.selected($_POST['orderuser'],1,false).' value="1">по имени</option> <option '.selected($_POST['orderuser'],2,false).' value="2">по логину</option> </select> <input type="submit" class="recall-button" value="Найти"><br> </p> </form> <h3>Всего пользователей: '.$count_user.'</h3> <table class="userlist">'; $names = get_names_array_rcl($rcl_action_users,'user'); //Вывод списка пользователей foreach((array)$rcl_action_users as $user){ $last_action = last_user_action_recall($user->time_action); if(!$last_action) $action = '<div class="status_author_mess" style="background:url('.get_bloginfo('wpurl').'/wp-content/plugins/recall/img/minionline.gif) no-repeat;"></div>'; else $action = '<div>не в сети '.$last_action.'</div>'; $userlist .='<tr class="user-single list-list">'; $userlist .='<td class="thumb-user" width="90">'.get_avatar($user->user,70).'</td>'; $userlist .='<td><a href="'.get_author_posts_url($user->user).'"><h3 class="title-prod">'.$names[$user->user].'</h3></a>'; $desc = apply_filters('rcl_description_user',$desc,$user->user); $userlist .= $desc; $userlist .='<p class="desc-prod">'.get_the_author_meta('description', $user->user).'</p></td>'; $userlist .='<td class="action-user">'.$action.'</td>'; $userlist .='</tr>'; $desc = ''; } $userlist .='</table>'; //вывод постраничной навигации if(!$_POST['search-user']){ $userlist .= navi_rcl($inpage,$count_user,$num_page); } return $userlist; } //конец шорткода userlist
Тема закрыта. Публикация новых сообщений запрещена.