WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
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');
}
});追加すると管理画面の投稿一覧ページに「はい」「いいえ」という項目が追加されます。
