Домой Каталог: Дополнения WP-Recall Top user by rating Как убрать из вывода профили несуществующих пользователей
23ответ(ов) в теме
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
1
16:29

Здравствуйте!
Реколл 15.9.8 Тop Usеr by rating 1.6
Подскажите, пожалуйста. У меня на странице вывода через шорткод [ top_user_rating ] да вообщем-то любой шорткод из вами предложенных, среди существующих пользователей в рейтинге появляются и пустые белые профили. Я так понимаю, что это уже удаленные пользователи. А как бы мне убрать их, а то обидно другим. Эти же их места занимают))? Никак не пойму...

Вы не можете просматривать опубликованные ссылки

Спасибо.

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
2
17:18

В таблицах: _rating_users и _rating_values удалить упоминания этих юзеров. Вообще там все должно само удаляться при удалении юзера.

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
3
17:19

Извините, а как мне найти эти таблицы?

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
4
17:22

Тогда я думаю будет легче добавить id этих юзеров в исключения, т.е. атрибут exclude="ID1,ID2,ID3"

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
5
19:47

Уже думал над этим, но профили не открываются, чтобы ID увидеть. Они просто фоновые и всё.

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
6
20:10

Я вижу на скорую руку геморойный путь:
У вас же их общий рейтинг отображается? На скрине вижу
1. В бд wp_rcl_rating_users смотрим колонку rating_total, находим нужное число
Смотрим у него user_id. Запоминаем

2. Идем в таблицу юзеров - wp_users и смотрим в колонку ID - если такое число есть - значит это рейтинг не удаленного юзера. Не трогаем.
Если там нет - то возвращаемся wp_rcl_rating_users и у того id удаляем вообще всю строчку.

Но надо понимать всю кухню. И делать копию БД перед всеми изменениями.

Или найдя ID несуществующего юзера - скрыть его по совету Preci

p.s. данные рейтинга остались скорее всего - что вы удаляли юзеров при деактивированном WP-Recall
Потому как плагин когда активен - он висит на ВП хуке удаления юзера и чистит за ним таблички

1
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
7
20:17

Да....это целое дело.....И главное со страницы, где они расположены, не войдешь в них. Они не активны. Так бы я спокойно мог посмотреть их ID и добавить в exclude, как рекомендует Preci. Попробую через базу данных залезть посмотреть, как советуете. Откуда они вообще взялись, эти призраки,..Их несколько десятков. Что-то я сомневаюсь, что это бывшие пользователи. Удалил максимум 5-6 аккаунтов за всё время...
Спасибо за помощь, что-то буду пробовать делать....

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
8
20:29

Накидал запрос на поиск отсутствующих
Пробуйте в таблице этот запрос сделать:

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 несуществующего юзера

Вы не можете просматривать опубликованные ссылки
1
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
9
20:37

Понял. Здорово, буду делать. Спасибо!

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
10
23:03

У блока с пользователем, которые выводятся в рейтинге, есть атрибут 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 я написал

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
11
23:13

Понял. Попробую узнать. А копию базы данных делать нужно перед всей этой операцией?

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
12
23:17

Для этого не надо в базу лезть, вот

Вы не можете просматривать опубликованные ссылки

- там и у того у кого нет ника будет указан его id, вот его и добавляй в исключения в шорткоде

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
13
23:35

Исключения - это в настройках доп поле Исключить пользователя? Я добавил ID пустого пользователя - 476. Но ведь это просто в ЛК не будет считаться его место. А так он всё равно присутствует на странице среди других пользователей...

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
14
23:38

[ top_user_rating exclude="тут id через запятую" ]

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
15
23:52

Это я понял. Вот, например, [ top_user_rating exclude="476" ] Где этот шорткод со всеми исключаемыми ID должен стоять? Вот у меня страница с выводом
[ top_user_rating sorting="0" limit="100" ] Не вместо же этого шорткода и не рядом. А где? Простите меня, пожалуйста, но что-то я туплю на ночь глядя....

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
16
23:58

[ top_user_rating sorting="0" limit="100" ]
заменить на
[ top_user_rating sorting="0" limit="100" exclude="тут ид через запятую" ]

1
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
17
00:02

Спаситель вы мой)) Получилось. Спасибо и сорри за беспокойство и моё крайнее невежество.

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
18
00:35

Странно только что теперь, после исключения белых профилей на странице всё хорошо места соответствующие, а вот в ЛК места остались прежними, какие были при белых профилях. То есть, например, на странице вывода пользователь на 15 месте, а в ЛК он на 70-ом, как и было при белых профилях.

0
Preci
не в сети 17 часов
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
19
00:37

В настройках плагина надо указать те же ид для исключения что и в шорткоде указали

0
Poruchik
не в сети 4 года
На сайте с 20.05.2016
Участник
Тем 128
Сообщения 478
20
00:45

Спасибо большое еще раз!

0
GYURZA
не в сети 6 лет
На сайте с 31.03.2017
Участник
Тем 6
Сообщения 26
21
11:59

Preci сказал(а)

[ top_user_rating exclude="тут id через запятую" ]

Добрый день, мне этот вариант не сильно подходит, так как при добавлении нового пользователя придется каждый раз в ручную делать запись нового ID. Как можно реализовать исключение например по слагу роли пользователя.Например в вордпрессе присвоена роль участника - мне его выводить не нужно, а роль автора должна быть в списке участников.?

0
GYURZA
не в сети 6 лет
На сайте с 31.03.2017
Участник
Тем 6
Сообщения 26
22
12:04

Помогите!Что можно придумать?
Preci сказал(а)
[ top_user_rating exclude="тут id через запятую" ]

Добрый день, мне этот вариант не сильно подходит, так как при добавлении нового пользователя придется каждый раз в ручную делать запись нового ID. Как можно реализовать исключение например по слагу роли пользователя.Например в вордпрессе присвоена роль участника - мне его выводить не нужно, а роль автора должна быть в списке участников.?

0
Вова (Otshelnik-Fm)
не в сети 3 дня
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
23
12:15

Тему закрываю!
Не пишем в чужих темах. Создаем свою - с отсылкой, если надо к этой теме.
В одной теме решаем один вопрос.

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