Домой Wp-Recall WP-Recall: Проблемы и решения Сортировка на странице пользователей
4ответ(ов) в теме
skorp_2004
не в сети 10 лет
На сайте с 16.01.2014
Участник
1
03:57

Здравствуйте!

Подскажите пожалуйста, как сделать сортировку на странице пользователей, по последней дате входа?

Сейчас сортировка идет 'orderby' => 'login',

Заранее большое спасибо

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
12:25

на форуме уже было предложено готовое решение. Чтобы не искать, выкладываю здесь код, добавив котрый в файл 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

0
skorp_2004
не в сети 10 лет
На сайте с 16.01.2014
Участник
3
18:03

Спасибо но это не совсем то... У меня уже масса правок внесена в шорткод по умолчанию.
Можно ли как-то добавить только функцию сортировки по последней дате входа т.к. я не могу понять как это сделать... Спасибо.

0
Андрей CS
не в сети 2 дня
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
4
19:38

Вам дано готовое решение, а как его использовать уже ваше дело.

0
Тема закрыта. Публикация новых сообщений запрещена.