【SWELL】投稿一覧に「日・週・月・全」のアクセス数を表示する方法

当ページのリンクには広告が含まれています。
この記事でわかること
  • 無料テーマ「cocoon」と同じように投稿一覧で「日・週・月・全」のアクセス数を確認する方法
  • なるべくプラグインを使わないで、アップデートに左右されない
  • 5分くらいで完了したい

cocoonでは表示されてた…SWELLではできないの?

GA4を開くの面倒だからWordPressで確認したい!

筆者も以前コクーンを使用していて、アクセス数の伸び具合はWordPressで確認していました

SWELLは総PV数は表示されますが、「日・週・月・全」はデフォルトでは表示されないため、すこし不便に感じていました。

そこで筆者が SWELLでPV数を表示させた方法と注意点 を解説していきます。

SWELLの親テーマをさわらないためバグが起きるリスクは低いですが
実装される際は事前にバックアップを取るなど自己責任でお願いいたします

もくじ

投稿一覧に「日・週・月・全」のアクセス数を表示するステップ

  • プラグイン「Code Snippets」をインストールする
  • スペニットにコードをコピペする
  • 表示されているか確認

プラグイン「Code Snippets」って?

「Code Snippets」とは、ウェブサイトのfunctions.phpファイルに簡単にコードを追加できるツールです。

functions.phpファイルはWordPressのテーマの機能やカスタマイズを追加する重要なファイル

このプラグインを使うと、親テーマを直接編集する必要がなく、子テーマを使用せずにカスタマイズが可能になります。

テーマのアップデートによるカスタムコードの上書きを防ぐことができ、サイト管理が簡単になります。

投稿一覧に「日・週・月・全」のアクセス数を表示する具体的な方法

STEP
プラグイン「Code Snippets」をインストールする

WordPressの管理画面から、プラグインの検索に「Code Snippets」と入力します。

今すぐインストール→有効化します。

WordPressに「スペニット」が表示されます。

STEP
スペニットにコードをコピペする

スペニット > 新規追加 > ファンクション を選択します。

タイトルを「PV数の確認用」、白い枠内に以下のコードをコピペしてください↓

function set_post_views($postID) {
    $count_keys = ['post_views_count', 'post_daily_views_count', 'post_weekly_views_count', 'post_monthly_views_count'];
    foreach ($count_keys as $count_key) {
        $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);
        }
    }
}

function track_post_views($post_id) {
    if (!is_single()) return;
    if (empty($post_id)) {
        global $post;
        $post_id = $post->ID;
    }
    set_post_views($post_id);
}
add_action('wp_head', 'track_post_views');

// リセット用のスケジュールイベントを作成
if (!wp_next_scheduled('reset_daily_views')) {
    wp_schedule_event(time(), 'daily', 'reset_daily_views');
}

if (!wp_next_scheduled('reset_weekly_views')) {
    wp_schedule_event(time(), 'weekly', 'reset_weekly_views');
}

if (!wp_next_scheduled('reset_monthly_views')) {
    wp_schedule_event(time(), 'monthly', 'reset_monthly_views');
}

// 日ごとのPV数リセット
add_action('reset_daily_views', 'reset_daily_views_count');
function reset_daily_views_count() {
    global $wpdb;
    $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '0' WHERE meta_key = 'post_daily_views_count'");
}

// 週ごとのPV数リセット
add_action('reset_weekly_views', 'reset_weekly_views_count');
function reset_weekly_views_count() {
    global $wpdb;
    $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '0' WHERE meta_key = 'post_weekly_views_count'");
}

// 月ごとのPV数リセット
add_action('reset_monthly_views', 'reset_monthly_views_count');
function reset_monthly_views_count() {
    global $wpdb;
    $wpdb->query("UPDATE $wpdb->postmeta SET meta_value = '0' WHERE meta_key = 'post_monthly_views_count'");
}

// 管理画面にカラムを追加
add_filter('manage_posts_columns', function($columns){
    $columns['view'] = 'View';
    return $columns;
});

// カラムにPV数を表示
add_action('manage_posts_custom_column', function($column_name, $post_id){
    if ($column_name == 'view') {
        $daily_views = get_post_meta($post_id, 'post_daily_views_count', true);
        $weekly_views = get_post_meta($post_id, 'post_weekly_views_count', true);
        $monthly_views = get_post_meta($post_id, 'post_monthly_views_count', true);
        $total_views = get_post_meta($post_id, 'post_views_count', true);

        echo '日:' . ($daily_views ? $daily_views : '0');
        echo '<br />';
        echo '週:' . ($weekly_views ? $weekly_views : '0');
        echo '<br />';
        echo '月:' . ($monthly_views ? $monthly_views : '0');
        echo '<br />';
        echo '全:' . ($total_views ? $total_views : '0');
    }
}, 10, 2);

// ウィークリーとマンスリーのスケジュールを追加
add_filter('cron_schedules', 'custom_cron_schedules');
function custom_cron_schedules($schedules) {
    $schedules['weekly'] = array(
        'interval' => 604800,
        'display' => __('Once Weekly')
    );
    $schedules['monthly'] = array(
        'interval' => 2592000,
        'display' => __('Once Monthly')
    );
    return $schedules;
}

変更を保存 > 有効化 します。

STEP
表示されているか確認

有効化した直後は、数字は「0」です。

投稿ページを表示して数字が増えないときは…

スマホ、他のパソコン、別プロファイル、シークレットウィンドウなどで投稿を表示して、数字が増えるか確認してください。

まめ

お疲れさまでした…!
これで作業は完了です◎

まとめ

SWELLの投稿一覧に「日・週・月・全」のPV数を表示する方法を紹介しました。

プラグイン1つ追加+コードのコピペで実装できるので、cocoonのPV数に慣れていたかたはぜひ参考にしてください。

あわせて読みたい…ブログ運営について

もくじ