フリーランスコーダーに求められること
#独り言 #面白い話
2025.03.23
まず、各投稿のアクセス数を取得する方法を決定する必要があります。一般的には以下の方法があります。
functions.php
にコードを追加し、投稿が表示されるたびにカスタムフィールドにカウントを保存する方法です。今回は、プラグインを使用せずに独自にアクセス数をカウントし、管理画面に表示する方法を紹介します。web-code35.com+1web-que.site+1
アクセス数をカウントする関数の追加
以下のコードをテーマのfunctions.php
に追加します。
phpコピーする編集する// 閲覧数を取得する関数
function getPostViews($postID){
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
return "0 View";
}
return $count.' Views';
}
// 閲覧数をカウントする関数
function setPostViews($postID) {
$count_key = 'post_views_count';
$count = get_post_meta($postID, $count_key, true);
if($count==''){
$count = 0;
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, '0');
}else{
$count++;
update_post_meta($postID, $count_key, $count);
}
}
この関数により、各投稿の閲覧数をカスタムフィールドpost_views_count
に保存し、取得することが可能となります。web-que.site+1ISSEN+1
投稿ページでのカウント処理の追加
投稿ページが表示されるたびに閲覧数をカウントするため、single.php
などの投稿テンプレートに以下のコードを追加します。web-que.site
phpコピーする編集する<?php
if (is_single()) {
setPostViews(get_the_ID());
}
?>
これにより、各投稿が表示されるたびに閲覧数がカウントされます。
次に、管理画面の投稿一覧に「閲覧数」のカラムを追加し、各投稿の閲覧数を表示します。
カラムの追加と表示
以下のコードをfunctions.php
に追加します。
phpコピーする編集する// 管理画面に閲覧数のカラムを追加
function add_views_column($columns) {
$columns['post_views'] = '閲覧数';
return $columns;
}
add_filter('manage_posts_columns', 'add_views_column');
// 閲覧数のカラムに値を表示
function display_views_column($column_name, $post_id) {
if ($column_name === 'post_views') {
echo getPostViews($post_id);
}
}
add_action('manage_posts_custom_column', 'display_views_column', 10, 2);
これにより、投稿一覧に「閲覧数」のカラムが追加され、各投稿の閲覧数が表示されます。
最後に、管理画面で閲覧数によるソート機能を実装します。
ソート可能なカラムの設定
以下のコードをfunctions.php
に追加します。
phpコピーする編集する// 閲覧数カラムをソート可能にする
function add_views_sortable_column($columns) {
$columns['post_views'] = 'post_views';
return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'add_views_sortable_column');
// 閲覧数でのソート処理
function sort_posts_by_views($query) {
if (!is_admin() || !$query->is_main_query()) {
return;
}
if ($query->get('orderby') === 'post_views') {
$query->set('meta_key', 'post_views_count');
$query->set('orderby', 'meta_value_num');
}
}
add_action('pre_get_posts', 'sort_posts_by_views');
これにより、投稿一覧の「閲覧数」カラムのヘッダーをクリックすると、閲覧数でソートが可能となります。