Blog スタッフブログ

WEB制作

[WordPress]プラグイン「Posts Like Dislike」の統計を管理画面に表示する方法

「Posts Like Dislike」は、投稿(やカスタム投稿タイプ)に Like / Dislike ボタンを追加し、投票数をカウントできるプラグインです。

表示位置(記事の前/後)や表示形式(Likeだけ・Dislikeだけ・両方)などを設定でき、ショートコードでテンプレートの任意の場所に表示することができます。

投稿を対象にした場合、記事の編集ページで統計を確認できます。

ただ1画面でまとめて確認するためにはカスタマイズが必要です。

そこで今回は、管理画面の投稿一覧に Like/Dislike の統計カラムを追加して、並び替えもできるようにする方法をご紹介します。

■手順

1.プラグインの有効化

「Posts Like Dislike」をインストール&有効化します。

2.function.phpにカスタマイズを追加

カウントは、投稿ごとの post meta として保存されます。

  • Like数:pld_like_count
  • Dislike数:pld_dislike_count

これを利用したコードをfunctions.phpに追加します。

/**
 * Posts Like Dislike: 管理画面「投稿一覧」に Like/Dislike カラムを追加
 * meta_key: pld_like_count / pld_dislike_count
 */

add_filter('manage_post_posts_columns', function ($columns) {
  // タイトルの後あたりに差し込む
  $new = [];
  foreach ($columns as $key => $label) {
    $new[$key] = $label;
    if ($key === 'title') {
      $new['pld_like']    = 'はい';
      $new['pld_dislike'] = 'いいえ';
      $new['pld_total']   = '合計';
    }
  }
  return $new;
});

add_action('manage_post_posts_custom_column', function ($column, $post_id) {
  if ($column === 'pld_like') {
    echo (int) get_post_meta($post_id, 'pld_like_count', true);
  }
  if ($column === 'pld_dislike') {
    echo (int) get_post_meta($post_id, 'pld_dislike_count', true);
  }
  if ($column === 'pld_total') {
    $like = (int) get_post_meta($post_id, 'pld_like_count', true);
    $dis  = (int) get_post_meta($post_id, 'pld_dislike_count', true);
    echo $like + $dis;
  }
}, 10, 2);

// ソート対応(Like/Dislikeのみ。合計は計算カラムなので未対応)
add_filter('manage_edit-post_sortable_columns', function ($columns) {
  $columns['pld_like']    = 'pld_like';
  $columns['pld_dislike'] = 'pld_dislike';
  return $columns;
});

add_action('pre_get_posts', function ($query) {
  if (!is_admin() || !$query->is_main_query()) return;
  if ($query->get('post_type') !== 'post') return;

  $orderby = $query->get('orderby');
  if ($orderby === 'pld_like') {
    $query->set('meta_key', 'pld_like_count');
    $query->set('orderby', 'meta_value_num');
  } elseif ($orderby === 'pld_dislike') {
    $query->set('meta_key', 'pld_dislike_count');
    $query->set('orderby', 'meta_value_num');
  }
});

追加すると管理画面の投稿一覧ページに「はい」「いいえ」という項目が追加されます。