Здравствуйте!
Подскажите пожалуйста в чем ошибка. Доработал плагин
по
. Теперь за публикацию комментария начисляется рейтинг. Решил по аналогии реализовать задачу по добавлению рейтинга за публикацию поста. В функшн.пхп добавил код, в настройках и в профиле появились соответсвующие поля, но рейтинг не начисляется...
Код:
// рейтинг в вп-рекал ПОСТЫ
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'");
}
Тему переместил. Ваши изыскания не относятся к проблемам реколл.
Публикация поста идет сразу? Или запись попадает сначала на модерацию?
add_action('wp_insert_post может заменить на add_action( 'publish_post' ?
или вот еще инфа
Я сильно не вникал в ваш код..
Этот код должен работать
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'"); }
по идее в коде ошибок нет, все должно работать верно, может значение рейтинга на добавление публикации неверно выставлено в настройках?
Заметил еще один баг, при публикации одной новости в историю рейтинга заносится 3 сообщения о присвоении рейтинга (при этом к рейтингу добавляется двойное количество баллов).