Отборная информация, которая вставляет!

Создаем рейтинг автора — заключительная часть цикла как сделать социальную сеть на wordpress

Вот мы и подобрались к заключительной части цикла статей. Как и раньше все, что будет описано в статье ниже — вы можете использовать отдельно от других приемов описанных в этом цикле.

В данной статье будет описаны приемы создания расширенного рейтинга автора.

Итак, рейтинг автора. На основе чего его можно сделать? Изначально я делал просто — использовал плагин wp-postrating, а потом создавал функцию, которая просто подсчитывает кол-во баллов поставленных пользователями для статьи и суммирует их. Т.е. к примеру, автор написал 10 статей, каждая статья получила 5 баллов рейтинга — в итоге 5*10 = 50 рейтинг автора.

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

Имя плагину — cubepoints. Русификацию можно скачать здесь. Что может делать плагин: добавлять определенное кол-во баллов за публикацию статей, за комментирование, за ежедневный логин. Само кол-во балов можно устанавливать любое. Кроме того доступны некоторые интересные модули, например, модуль ранги.

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

Но это ещё не все. Думаю, что такой вид рейтинга удобен, но не на все 100%, потому что выходит, что пользователь может получить только определенное количество баллов. Т.е опубликовал статью — держи 10 баллов, но ведь статьи бывают разные. Некоторые полезные, а некоторые — почитал и закрыл. Конечно было бы хорошо, чтобы пользователи повышали свой рейтинг от того насколько полезная статья.

Теперь перейдем к рейтингу статей.

Наверное самый лучший плагин для этих целей wp-postrating. Как и все остальные плагины Лестера, он хорошо сделан и хорошо описан.

Если не знаете инглиш, то расскажу вкратце. Устанавливаете плагин, идете в настройки устанавливаете вид рейтинга и если нужно вручную, то вставляете код в тело поста

<?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 — лучшие вакансии от лучших компаний.


 

Похожие статьи:



49 комментариев к “Создаем рейтинг автора — заключительная часть цикла как сделать социальную сеть на wordpress”

  1. масянька:

    о, читаете мои мысли, как раз ищу инфу по этой теме.

  2. wp-master:

    за бонус спасибо, очень полезное объединение

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

    • прошу прощения за невнимательность — это, оказывается, уже организовано. наверное, стоить удалить оба комментария.

    • ETNO:

      если в случае cubepoints — то
      php
      if(function_exists(‘cp_displayPoints’)){
      cp_displayPoints();
      }
      ?

      только поставьте в начале и конце

    • olegan92:

      я тоже не понял как сделать чтобы рейтинг выводился в sidebar где ава стоит.

      • ETNO:
        <?php if(function_exists('cp_displayPoints')){cp_displayPoints();}?>

        добавляете туда, где нужно вывести рейтинг

        • olegan92:

          а если я не лез в коды, просто использую виджет Theme My, вставил его в ситибар и все.то как вывести рейтинг. и куда именно вставлять этот код.обьясните пожалуйста подробнее для новичка. или скиньне мыло. у меня еще просто много вопросов. а подобных статей я нашел на русском только две. в обшем даже почитать не где

  4. Темыч:

    Приветствую. Большое спасибо за цикл статей.

    Интересует такой момент, — насколько увеличивается потребление памяти после всех манипуляций?

    • ETNO:

      само потребление не очень критично, у меня даже на самых навешанных сайтах не более 28мб, это без кеширования, но вот кол-во запросов — может, но опять же есть плагины кеширования которые спасают

  5. get_user_meta не работает на WP 2.x
    Пришлось обновляться до 3.0.1 версии

  6. Алекс:

    Чёт не получилось 🙁 Ставлю оценку и постоянный Loading… крутиться. Рейтинг не меняется.Но оценка после обновления страницы всё же засчитывается.

  7. Санька:

    В логе «кубы» очки добавляются, при этом рейтинг пользователей не меняется. WP 2.9 плагины последние.

  8. Санька:

    Конечно. При оценке статьи в postratings видны очки в логе cubepoints, но репа пользователя не меняется. 🙁

    • ETNO:

      фиг его знает, я так не могу ниче сказать, может настройки неверны. Может вы используете не целые числа рейтинга?

  9. А как ручками вывести ТОП пользователей? Чтобы имя автора — рейтинг

    • ETNO:

      ручками сложновато — мне на заказ писали функцию, но она была подогнана под конкретный сайт. А вот в cubepoints — там есть стандартная функция вывода топа + в хелпе на их сайте где-то был указан код, как его выводить в ручную

  10. Lena:

    Спасибо, я тоже искала нечто подобное.

  11. Mayya:

    А где можно взять формулы для рассчета рейтинга? Что-то близкое к stackoverflow. Заранее благодарю за ответ и еще больше — за полезную информацию.

  12. Сергей:

    Сайт плагина не работает cubepoints
    Что делать?

    p.s. можете ли помочь с установкой и настройкой рейтинга? за оплату.

  13. В чем конкретно проблема при установке рейтинга? У меня все работает

  14. Огромнейшее спасибо за весь цикл! получилось именно то что нужно было.

  15. Максим:

    Спасибо за статью.

    Автор, как вывести рейтинг автора поста?

    В интернете все перерыл, информации мало и ничего мне не помогло…

  16. Скачал версию cubepoints 3.5 и wp-ratings.

    Пытаюсь объединить возможности плагинов.

    Однако, в cp_admin_logs.php всего 20 строк…
    Куда вставлять: case «rating_post»: итп?

    Thx!

  17. evgeniy:

    как вывести виджет cubepoints в любом месте шаблона очень надо

  18. Vitaliy:

    Напишите пожалуйста об интеграции свежих версий 3.1, очень интересная и нужная тема. Я смотрю Ваш метод даже на оф. форуме описали!

  19. Vitaliy:

    И второй вопрос — как вывести рейтинг автора новости или например рейтинг автора в его профиле?

    Спасибо!

  20. Нужно подсказать админу новой социалки — вместе с ним делаем проэкт бесплатный трафик — вот хочется мне сдлеать рейтинг пользователей — первый вариант наиболее оптимален

  21. Roma:

    Здраствуйте, ребята кто знает как связать эти два плагина (чтоб рейтинг постов тоже влиял на рейтинг автора). Инструкция выше предназначена для cubepoints 2.1.3, а как быть если версия cubepoints 3…?

  22. stas:

    Приветствую,

    ETNO
    4 Май 2013 в 12:26

    не совсем. Я недавно смотрел новые версии плагинов и написал решение для них, скоро опубликую, пока проверяю

    А где можно почитать об этом решении?

  23. Андрей:

    Скажите, пожалуйста, а как собственно вставить суммарный рейтинг (cubepoint + wp-postrating) в колонку автора, который скажем выводится под каждой записью.

  24. Андрей:

    Пытаюсь вывести реейтинг АВТОРА ЗАПИСИ следующим кодом: if(function_exists(‘cp_displayPoints’)){cp_displayPoints($curauth->ID);

    Но выводит рейтинг того, кто залогинен, а не рейтинг автора записи. Подскажите, пожалуйста, какой код нужно вставлять для вывода именно рейтинга АВТОРА ЗАПИСИ.

    • ETNO:

      этот код будет работать только на странице author.php причем выше нужно добавить

      <?php
      global $wp_query;
      $curauth = $wp_query->get_queried_object();
      ?>

      Чтобы вывести на странице поста рейтинг автора статьи попробуйте так

      <?php $author_id = get_the_author_meta('ID'); if(function_exists('cp_displayPoints')){cp_displayPoints($author_id);}?>
      
  25. Андрей:

    Спасибо огромное! Получилось, ура 🙂

оставить отзыв

Если хотите вставить код в комментарии, то оберните его тегами ‹pre›‹/pre›