Здравствуйте!
Реколл 15.9.8 Тop Usеr by rating 1.6
Подскажите, пожалуйста. У меня на странице вывода через шорткод [ top_user_rating ] да вообщем-то любой шорткод из вами предложенных, среди существующих пользователей в рейтинге появляются и пустые белые профили. Я так понимаю, что это уже удаленные пользователи. А как бы мне убрать их, а то обидно другим. Эти же их места занимают))? Никак не пойму...
Спасибо.
Я вижу на скорую руку геморойный путь:
У вас же их общий рейтинг отображается? На скрине вижу
1. В бд wp_rcl_rating_users смотрим колонку rating_total, находим нужное число
Смотрим у него user_id. Запоминаем
2. Идем в таблицу юзеров - wp_users и смотрим в колонку ID - если такое число есть - значит это рейтинг не удаленного юзера. Не трогаем.
Если там нет - то возвращаемся wp_rcl_rating_users и у того id удаляем вообще всю строчку.
Но надо понимать всю кухню. И делать копию БД перед всеми изменениями.
Или найдя ID несуществующего юзера - скрыть его по совету Preci
p.s. данные рейтинга остались скорее всего - что вы удаляли юзеров при деактивированном WP-Recall
Потому как плагин когда активен - он висит на ВП хуке удаления юзера и чистит за ним таблички
Да....это целое дело.....И главное со страницы, где они расположены, не войдешь в них. Они не активны. Так бы я спокойно мог посмотреть их ID и добавить в exclude, как рекомендует Preci. Попробую через базу данных залезть посмотреть, как советуете. Откуда они вообще взялись, эти призраки,..Их несколько десятков. Что-то я сомневаюсь, что это бывшие пользователи. Удалил максимум 5-6 аккаунтов за всё время...
Спасибо за помощь, что-то буду пробовать делать....
Накидал запрос на поиск отсутствующих
Пробуйте в таблице этот запрос сделать:
SELECT * FROM `wp_rcl_rating_users` AS t_rating left outer join `wp_users` AS t_users ON t_rating.user_id = t_users.ID where t_users.ID is null
Вставьте вот сюда
Префикс wp_ если у вас другой - поменяйте на свой в 2х местах
Итого:
333 это id несуществующего юзера
У блока с пользователем, которые выводятся в рейтинге, есть атрибут data-user-id, в котором указан ID пользователя, этот id берется из таблиц рейтинга, а значит оно там указано всегда - по нему можно посмотреть id таких пользователей.
Проблема в том, что в сам вывод пользователей я могу добавить проверку на его существование, от этого никакой нагрузки не будет. Но есть еще функция которая считает место пользователя в рейтинге за все время для вывода в ЛК и в ней тогда то же надо делать проверку, а я и с текущим запросом гемора получил достаточно:
$user_rank = $wpdb->get_var(" SELECT rank FROM (SELECT @rank:=@rank+1 AS rank, user_id FROM ".RCL_PREF."rating_users, (SELECT @rank := 0) as t where user_id != 0 $exclude ORDER BY ABS(rating_total) DESC, user_id ) t WHERE user_id = $user_id; ");
Сейчас этот запрос очень быстрый, что будет если тут прикрутить еще проверку на существование юзера - не могу сказать. Я конечно попробую и посмотрю, но ничего не обещаю. Пока советую просто исключить таких пользователей через атрибут шорткода, как узнать их id я написал
Это я понял. Вот, например, [ top_user_rating exclude="476" ] Где этот шорткод со всеми исключаемыми ID должен стоять? Вот у меня страница с выводом
[ top_user_rating sorting="0" limit="100" ] Не вместо же этого шорткода и не рядом. А где? Простите меня, пожалуйста, но что-то я туплю на ночь глядя....
Странно только что теперь, после исключения белых профилей на странице всё хорошо места соответствующие, а вот в ЛК места остались прежними, какие были при белых профилях. То есть, например, на странице вывода пользователь на 15 месте, а в ЛК он на 70-ом, как и было при белых профилях.
Preci сказал(а)
[ top_user_rating exclude="тут id через запятую" ]
Добрый день, мне этот вариант не сильно подходит, так как при добавлении нового пользователя придется каждый раз в ручную делать запись нового ID. Как можно реализовать исключение например по слагу роли пользователя.Например в вордпрессе присвоена роль участника - мне его выводить не нужно, а роль автора должна быть в списке участников.?
Помогите!Что можно придумать?
Preci сказал(а)
[ top_user_rating exclude="тут id через запятую" ]
Добрый день, мне этот вариант не сильно подходит, так как при добавлении нового пользователя придется каждый раз в ручную делать запись нового ID. Как можно реализовать исключение например по слагу роли пользователя.Например в вордпрессе присвоена роль участника - мне его выводить не нужно, а роль автора должна быть в списке участников.?