Вот мы и подобрались к заключительной части цикла статей. Как и раньше все, что будет описано в статье ниже — вы можете использовать отдельно от других приемов описанных в этом цикле.
В данной статье будет описаны приемы создания расширенного рейтинга автора.
Итак, рейтинг автора. На основе чего его можно сделать? Изначально я делал просто — использовал плагин wp-postrating, а потом создавал функцию, которая просто подсчитывает кол-во баллов поставленных пользователями для статьи и суммирует их. Т.е. к примеру, автор написал 10 статей, каждая статья получила 5 баллов рейтинга — в итоге 5*10 = 50 рейтинг автора.
Но с тех пор прошло некоторое кол-во времени и появились более удобные плагины, которые отвечают за рейтинги.
Имя плагину — . Русификацию можно скачать . Что может делать плагин: добавлять определенное кол-во баллов за публикацию статей, за комментирование, за ежедневный логин. Само кол-во балов можно устанавливать любое. Кроме того доступны некоторые интересные модули, например, модуль ранги.
Также, к примеру, можете скачать который скрывает часть контента для пользователей, которые не достигли определенного уровня рейтинга. Т.е. выходит что-то вроде как хайд.
Но это ещё не все. Думаю, что такой вид рейтинга удобен, но не на все 100%, потому что выходит, что пользователь может получить только определенное количество баллов. Т.е опубликовал статью — держи 10 баллов, но ведь статьи бывают разные. Некоторые полезные, а некоторые — почитал и закрыл. Конечно было бы хорошо, чтобы пользователи повышали свой рейтинг от того насколько полезная статья.
Теперь перейдем к рейтингу статей.
Наверное самый лучший плагин для этих целей . Как и все остальные плагины Лестера, он хорошо сделан и хорошо .
Если не знаете инглиш, то расскажу вкратце. Устанавливаете плагин, идете в настройки устанавливаете вид рейтинга и если нужно вручную, то вставляете код в тело поста
<?php if(function_exists('the_ratings')) { the_ratings(); } ?>
Вот и все.
А теперь бонус от меня.
Рассказываю как объединить возможности обеих плагинов. Т.е. будет система рейтинга от куба, но при этом каждый автор будет получать рейтинг также и за рейтинг его статей.
В плагине wp-postratings добавьте в файл wp-postratings.php примерно после
616 строки, в ней
// Log Ratings No Matter What
rate_log = $wpdb->query("INSERT INTO $wpdb->ratings VALUES ...
добавьте этот код
$post = get_post($post_id);
$author_id = $post->post_author;
$sql = "INSERT INTO `{$wpdb->prefix}cubepoints` VALUES (0,
$author_id, 'rating_post', $post_id, ".$ratings_value[$rate-1].",
".current_time('timestamp').")";
$wpdb->query($sql);
$cpoints = get_user_meta($author_id, 'cpoints', true);
$cpoints += $ratings_value[$rate-1];
$a = update_user_meta($author_id, 'cpoints', $cpoints);
И в плагине cubepoints в файл cp_admin_logs.php примерно после 98 строки
(после break;)
добавь этот код
case "rating_post":
$source = get_post($result->source);
if($source->ID!=''){
$source= '<a href="' . $source->guid . '"
title="'.$source->post_title.'">Post #'.$source->ID.'</a>' ;
}
else {$source= 'Post #'.$result->source;}
$type=__('Изменение рейтинга поста','cp');
break;
Вот и все. На этой ноте заканчиваю цикл статей на тему создания социальной сети на базе wordpress. Но не заканчиваю писать на эту тему. К примеру, в ближайшее время будет выложен плагин, с помощью которого можно делать платные социальные сети, подробней об этом — чуть позже.
Подписывайтесь на обновления, чтобы не пропустить вкусняшки.
UPD.
на новых версиях код поменялся, теперь нужно делать так. В файл wp-postratings.php нужно вставлять код
$post = get_post($post_id);
$author_id = $post->post_author;
$sql = "INSERT INTO `{$wpdb->prefix}cp` VALUES (0, $author_id, 'rating_post', $post_id, ".$ratings_value[$rate-1].", ".current_time('timestamp').")";
$wpdb->query($sql);
$cpoints = get_user_meta($author_id, 'cpoints', true);
$cpoints += $ratings_value[$rate-1];
$a = update_user_meta($author_id, 'cpoints', $cpoints);
и в cp_hooks
/** Post rating logs hook */
add_action('cp_logs_description','rating_post_log', 10, 4);
function rating_post_log($type,$uid,$points,$data){
if($type!='rating_post') { return; }
$post = get_post($data);
echo __('Изменен рейтинг', 'cp') . ' "<a href="'.get_permalink( $post ).'">' . $post->post_title . '</a>"';
}
Вы дизайнер, программист, копирайтер? Вы мастер своего дела? Вы достойны хорошей зарплаты и работы в стабильной компании. Посетите портал вакансии в IT — лучшие вакансии от лучших компаний.
Понравилась статья? - Подпишись.
Или поделись полезным с миром
Похожие статьи:
php
if(function_exists(‘cp_displayPoints’)){
cp_displayPoints();
}
?
Пришлось обновляться до 3.0.1 версии
Что делать?
Куда вставлять: case «rating_post»: итп?
4 Май 2013 в 12:26