NoriakiSaeki portfolio

【Cocoonカスタマイズ】管理画面の投稿一覧でアクセス数を確認&ソートできるようにする方法

2025.03.23

1. アクセス数の取得方法

まず、各投稿のアクセス数を取得する方法を決定する必要があります。​一般的には以下の方法があります。​

  • プラグインを使用する方法:​例えば、「WP-PostViews」というプラグインを使用すると、各投稿の閲覧数を自動的にカウントし、カスタムフィールドに保存します。​​web-que.site+2bossraku.com+2ISSEN+2
  • 独自に実装する方法:​テーマの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());
}
?>

これにより、各投稿が表示されるたびに閲覧数がカウントされます。​

2. 管理画面へのカラム追加

次に、管理画面の投稿一覧に「閲覧数」のカラムを追加し、各投稿の閲覧数を表示します。​

カラムの追加と表示

以下のコードを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);

これにより、投稿一覧に「閲覧数」のカラムが追加され、各投稿の閲覧数が表示されます。​

3. アクセス数によるソート機能の実装

最後に、管理画面で閲覧数によるソート機能を実装します。

ソート可能なカラムの設定

以下のコードを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');

これにより、投稿一覧の「閲覧数」カラムのヘッダーをクリックすると、閲覧数でソートが可能となります。​

4. 注意点

  • 閲覧数のカウントは、ユーザーが投稿ページを表示するたびに増加します。管理者自身の閲覧もカウントされるため、必要に応じて条件を追加し、特定のユーザーの閲覧を除外することを検討してください。​
  • キャッシュプラグインを使用している場合、閲覧数のカウントが正確に行われない可能性があります。キャッシュの設定を調整するか、AJAXを使用して非同期にカウントを行う方法を検討してください。

関連記事