11ответ(ов) в теме
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
1
16:03
Версия WP-Recall: 16.26.5

Доброго времени суток. Появился вопрос по данному дополнению.
Через статью

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

я сделал тип рейтинга, вывел в постах в нужном месте и при просмотре поста все работает отлично.
Но такой вопрос, как можно сделать так, чтобы ставить лайк не заходя в пост. Вот я вывожу все посты на главной, архивы и категории. Там выводится на данный момент статичное отображения количество лайков?

1
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
2
13:07

Что то совсем все пропали!

0
Андрей CS
не в сети 6 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
3
13:17

смотрите фильтр rcl_rating_user_can
установите параметр vote в значение true

0
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
4
10:44

$this->user_can = apply_filters( 'rcl_rating_user_can', $this->user_can, $data );

Фильтр описан в функции setup_box().
А $this->user_can['vote'] в функции get_box_like(). И я не совсем понимаю как через фильтры изменить данное значение.
Если в самом файле class-rcl-rating-box.php дописать $this->user_can['vote'] = true, то лайки ставятся.
Но перестает работать проверка, если пользователь поставил лайк иконка сердечка не меняется.
Было бы хорошо сделать дополнительный шорткод не только для вывода списка рейтинга, но и саму кнопку поставить лайк. Чтобы было проще когда работаешь с натяжкой шаблона.

0
Андрей CS
не в сети 6 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
5
18:57

Владимир DestWeb сказал(а)
я не совсем понимаю как через фильтры изменить данное значение

попробуйте найти доступное описание работы с фильтрами WP, сложного там нет

add_ffilter('rcl_rating_user_can', function($user_can){
  $user_can['vote'] = true;
  return $user_can;
});

0
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
6
18:55

Всем доброго времени суток. Возвращаюсь сюда, чтобы не плодить темы.
Суть проблемы заключается в том, что когда вывожу кнопку лайка в кастомном типе записи. Все работает отлично.
Но вот есть минус, верстка используется везде одна в ЛК и в на главной, где я и вывожу кастомные типы записей.
До того как оставляешь лайк, class у блока rating-vote vote-heart. После голосования добавляется класс user-vote, и после перезагрузки страницы он сохраняется. Но вот где выводится кастомно, на той же главной, после перезагрузки класс не сохраняется. И вот когда нажимаешь удалить лайк, класс снова добавляется.

Уточню - На странице вывода всех постов. Может на странице ЛК как то идет проверка на пользователя и тем самым сохраняется класс из куки?

0
Preci
не в сети 1 день
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1643
7
19:26

Возможно кеш включен и авторизованным отдается страница из кеша, которая для гостя генерировалась.

0
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
8
20:56

Preci сказал(а)
Возможно кеш включен и авторизованным отдается страница из кеша, которая для гостя генерировалась.

Как раз в момент разработки кеширование отключил полностью везде. И сайт сделан так, чтобы гости не могли просматривать его.

0
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
9
14:23

Протестировал на чистой установке. Сделал кастомный пост тайп, сделал кастомный рейтинг. Сделал страницу шаблона. По дефолту лайк проставить нельзя, иконка не активна.
Как написал код выше Андрей.

add_filter('rcl_rating_user_can', function($user_can){
	$user_can['vote'] = true;
	return $user_can;
});

Лайки проставлять можно. Но как я уже сказал выше, не сохраняется класс если ты уже проставил лайк.

0
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
10
16:17

Дополнительный вопрос. Решил попробовать по другому переиграть.
Как в функции get_html_button() можно проверить текущего пользователя, поставил ли он лайк или нет?
Я думал получится через $this->user_vote, но возвращает NULL.

0
Владимир
не в сети 4 часа
На сайте с 29.11.2021
Участник
Тем 9
Сообщения 59
11
15:24

Может кому понадобится, я добился нужного результата, взяв часть кода из функции setup_user_can(), и вставил в get_html_button().

$user_vote = apply_filters( 'rcl_rating_user_vote', false, $this );

$this->user_vote = $user_vote !== false ? $user_vote : rcl_get_vote_value( $this->user_id, $this->object_id, $this->rating_type );

И теперь на выводе всех постов кнопка лайка отлично отрабатывает, и запоминается класс если пользователь проголосовал.

0
Вы не имеете права на публикацию сообщений в этой теме