13ответ(ов) в теме
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
1
16:55

Здравствуйте!
Подскажите пожалуйста в чем ошибка. Доработал плагин

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

по

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

. Теперь за публикацию комментария начисляется рейтинг. Решил по аналогии реализовать задачу по добавлению рейтинга за публикацию поста. В функшн.пхп добавил код, в настройках и в профиле появились соответсвующие поля, но рейтинг не начисляется...
Код:

// рейтинг в вп-рекал ПОСТЫ
if(!is_admin()) add_action('init','rcl_register_add_post_type',30);
if(is_admin()) add_action('admin_init','rcl_register_add_post_type',30);
function rcl_register_add_post_type(){
rcl_register_rating_type(array('rating_type'=>'add-post','type_name'=>'Добавление поста','icon'=>'fa-plus'));
}

add_action('wp_insert_post','add_rating_with_add_post',10,2);
function add_rating_with_add_post($post_id,$post){
global $rcl_rating_types;

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

$args = array(
'user_id' => $post->user_id,
'object_id' => $post_id,
'object_author' => $post->user_id,
'rating_value' => $rcl_rating_types['add-post']['type_point'],
'rating_type' => 'add-post'
);

rcl_insert_rating($args);
}

add_action('delete_post','add_rating_with_delete_post');
function add_rating_with_delete_post($post_id){
global $rcl_rating_types,$wpdb;

$post = get_post($post_id);

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

$args = array(
'user_id' => $post->user_id,
'object_id' => $post_id,
'object_author' => $post->user_id,
'rating_value' => $rcl_rating_types['add-post']['type_point'],
'rating_type' => 'add-post'
);

rcl_delete_rating($args);

$wpdb->query("DELETE FROM ".RCL_PREF."rating_totals WHERE object_id='$post_id' AND rating_type='add-post'");
}

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

а вы вообще в курсе что находится внутри объекта $post?
пробуйте его для начала разложить через print_r что ли.

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

Тему переместил. Ваши изыскания не относятся к проблемам реколл.

Публикация поста идет сразу? Или запись попадает сначала на модерацию?
add_action('wp_insert_post может заменить на add_action( 'publish_post' ?
или вот еще инфа

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

Я сильно не вникал в ваш код..

0
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
4
20:49

Пробовал по-разному, ничего не получается... Не могли бы вы написать более подробно ?

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

не знаю что именно вы пробовали делать "по-разному", но я советовал посмотреть на содержимое объекта $post, это пробовали сделать?

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

Этот код должен работать

if(!is_admin()) add_action('init','rcl_register_add_post_type',30);
if(is_admin()) add_action('admin_init','rcl_register_add_post_type',30);
function rcl_register_add_post_type(){
	rcl_register_rating_type(array('rating_type'=>'add-post','type_name'=>'Добавление поста','icon'=>'fa-plus'));
}
add_action('wp_insert_post','add_rating_with_add_post',10,3);
function add_rating_with_add_post($post_id,$post,$update){
	global $rcl_rating_types;
	if($update) return false;
	$args = array(
		'user_id' => $post->post_author,
		'object_id' => $post_id,
		'object_author' => $post->post_author,
		'rating_value' => $rcl_rating_types['add-post']['type_point'],
		'rating_type' => 'add-post'
	);
	rcl_insert_rating($args);
}
add_action('delete_post','add_rating_with_delete_post');
function add_rating_with_delete_post($post_id){
	global $rcl_rating_types,$wpdb;
	$post = get_post($post_id);
	$args = array(
		'user_id' => $post->post_author,
		'object_id' => $post_id,
		'object_author' => $post->post_author,
		'rating_value' => $rcl_rating_types['add-post']['type_point'],
		'rating_type' => 'add-post'
	);
	rcl_delete_rating($args);
	$wpdb->query("DELETE FROM ".RCL_PREF."rating_totals WHERE object_id='$post_id' AND rating_type='add-post'");
}

0
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
7
01:06

Код работает, СПАСИБО!
Один нюанс, начисляется двойной рейтинг.

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

по идее в коде ошибок нет, все должно работать верно, может значение рейтинга на добавление публикации неверно выставлено в настройках?

0
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
9
14:49

Для теста выставил в настройках 1000, сразу после публикации начисляется 2000 пунктов... Это не критично, ведь в настройках можно указать вдвое меньше баллов.

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

А при удалении записи сколько убавляет?

0
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
11
15:06

Только после удаления записи из корзины, при этом списывается 2000 пунктов (в моем случае).

0
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
12
22:54

Не подскажите как вывести в историю рейтинга шаблон вывода названия статьи за которую пользователю насчитался рейтинг при публикации?
Типа: %USER% %VALUE% %DATE%

0
Виталий
не в сети 8 лет
На сайте с 12.01.2016
Участник
13
17:01

по идее в коде ошибок нет, все должно работать верно, может значение рейтинга на добавление публикации неверно выставлено в настройках?

Заметил еще один баг, при публикации одной новости в историю рейтинга заносится 3 сообщения о присвоении рейтинга (при этом к рейтингу добавляется двойное количество баллов).

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