Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Разделение типов комментариев для начисления рейтинга за комментирвоание
9ответ(ов) в теме
Vitaliy
не в сети 2 года
На сайте с 10.12.2015
Участник
Тем 77
Сообщения 287
1
18:01

Здравствуйте.
По инструкциям добавил себе на сайт возможность начисления рейтинга пользователям за комментирование.
Использовал этот код:

if(!is_admin()) add_action('init','rcl_register_add_comment_type',30);
if(is_admin()) add_action('admin_init','rcl_register_add_comment_type',30);
function rcl_register_add_comment_type(){   
    rcl_register_rating_type(array('rating_type'=>'add-comment','type_name'=>'Комментирование','icon'=>'fa-plus'));
}

add_action('wp_insert_comment','add_rating_with_add_comment',10,2);
function add_rating_with_add_comment($comment_id,$comment){
	global $rcl_rating_types;
	
	if(!$comment->user_id) return false;
	
	$args = array(
        'user_id' => $comment->user_id,
        'object_id' => $comment_id,
        'object_author' => $comment->user_id,
        'rating_value' => $rcl_rating_types['add-comment']['type_point'],
        'rating_type' => 'add-comment'
    );
	
	rcl_insert_rating($args);
}

add_action('delete_comment','add_rating_with_delete_comment');
function add_rating_with_delete_comment($comment_id){
	global $rcl_rating_types,$wpdb;
	
	$comment = get_comment($comment_id);
	
	if(!$comment->user_id) return false;
	
	$args = array(
        'user_id' => $comment->user_id,
        'object_id' => $comment_id,
        'object_author' => $comment->user_id,
        'rating_value' => $rcl_rating_types['add-comment']['type_point'],
        'rating_type' => 'add-comment'
    );
	
	rcl_delete_rating($args);
	
	$wpdb->query("DELETE FROM ".RCL_PREF."rating_totals WHERE object_id='$comment_id' AND rating_type='add-comment'");
}

(Получается вот такая штука

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

)

Появилась потребность немного изменить его (или дополнить), чтобы в настройках рейтинга добавился еще один пункт "Рейтинг за комментирование в группах"
Цель - за "основные" комменты на сайте начислять рейтинг по настройкам которые выводятся указанной функцией + добавить такой же функционал, только за начисление уже других значений рейтинга за коментарии в группах....
Как реализовать это не совсем понимаю... Я как собака понимаю, но сказать и сделать не могу)))

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

если реализовали код выше, то и это должно получится.
Регистрируете новый тип рейтинга "Комментирование в группах"
При начислении рейтинга за комментарий проверяете к какому типу записи относится комментарий и если это 'post-group', то начисляете, если нет то return false
И в уже добавленный код выше тоже добавляете такую проверку, только тут уже наоборот, если комментарий относится к типу записи 'post-group' то return false

1
Vitaliy
не в сети 2 года
На сайте с 10.12.2015
Участник
Тем 77
Сообщения 287
3
18:13

Ну код-то я не сам реализовал, я до такого еще не дорос)) Спасибо codeseller.ru (ex. wppost.ru), код честно скопировал с ваших инструкций))

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

В уже готовый код ниже строки
if(!$comment->user_id) return false;
добавляем код
$post = get_post($comment->comment_post_ID);
if($post->post_type=='post-group') return false;

тогда все операции с комментариями групп будут игнорироваться существующим кодом, а уже для комментирования в группах как я и сказал ранее производим те же манипуляции с регистрацией типа рейтинга и тп.

1
Vitaliy
не в сети 2 года
На сайте с 10.12.2015
Участник
Тем 77
Сообщения 287
5
18:46

Вставил...

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

Не получилось... все равно за комменты в группах начисляется рейтинг...

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

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

1
Vitaliy
не в сети 2 года
На сайте с 10.12.2015
Участник
Тем 77
Сообщения 287
7
18:55

Да, действительно ошибка с моей стороны...
Дело в том, что в коде есть две строки

if(!$comment->user_id) return false;

Я получается вставил не под ту, что надо. Исправил - все работает.

Спасибо!

0
Андрей CS
не в сети 4 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
8
18:56

вставлять надо под обе

1
Vitaliy
не в сети 2 года
На сайте с 10.12.2015
Участник
Тем 77
Сообщения 287
9
18:56

понял

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