2020.03.04

WP ULikeで指定ユーザーの投稿にたいする合計いいね数を取得する方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

今日のブログではWP ULikeで指定ユーザーの投稿にたいする合計いいね数を取得する方法を紹介したいと思います。

記事内にSNSボタンとは別で独自のLINEボタンを設置できることで人気のプラグイン「WP ULike」を利用している方は多いと思います。

このプラグインでは「記事ごとの合計いいね数」を取得することはできますが、残念ながら用意されている関数だけでは「指定ユーザーの投稿にたいする合計いいね数」を取得することはできません。

ユーザーごとの合計いいね数が取得できれば、

  • いいねが多く寄せられている著者ランキングを作る
  • いいね数によってユーザーがランクアップする仕組みを作る

なんてことも可能です。

僕の運営するサイト『ココトモ』では、いいね数や投稿数によってランクアップする仕組みを用意しており、下図のようにマイページで自分のランクを確認することができます。

▽WP ULikeを利用して作ったランクアップ制度

WP ULikeで指定ユーザーの投稿にたいする合計いいね数を取得する方法

今回は指定ユーザーのIDを渡して、そのユーザーの合計いいね数を返す関数を用意しました。下記のコードをfunctions.phpに追加いただければ使用できます。

function get_author_like_counts($userID) {
  $args = array(
    'posts_per_page' => -1,
    'post_type'      => 'post',
    'author'         => $userID,
  );
  $posts = get_posts($args);
  $total_count = 0;
  foreach ($posts as $post) {
    $count = wp_ulike_get_post_likes($post->ID);
    if($count) {
      $total_count += $count;
    }
  }
  return $total_count;
}

上記ではユーザーの投稿(=記事)のみを対象にしていますが、get_postsの条件のpost_typeを複数指定すればカスタム投稿タイプなどのいいね数もあわせて取得することができます。

たとえば僕の運営サイトでは、記事の他にカスタム投稿タイプ「reply」にたいしてもユーザーからのいいねを受け付けているので、下記のように2つの投稿タイプの合計いいね数を取得しています。

function get_author_like_counts($userID) {
  $args = array(
    'posts_per_page' => -1,
    'post_type'      => array('post','reply')
    'author'         => $userID,
  );
  $posts = get_posts($args);
  $total_count = 0;
  foreach ($posts as $post) {
    $count = wp_ulike_get_post_likes($post->ID);
    if($count) {
      $total_count += $count;
    }
  }
  return $total_count;
}

おわりに

以上、今回の記事ではWP ULikeで指定ユーザーの投稿にたいする合計いいね数を取得する方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む