WordPressのSQliteでアクセス数を確認する方法

ベイブ
ベイブ

ワードプレス、PHP8、SQLite、Cocoonの環境下の投稿一覧画面にて、アクセス数を集計する方法を解説します。

 

SQliteでも最新ワードプレスとPHP8.xで稼働可能

詳しくは、以下を参照してください。

WordpressでSQliteが使えない理由と対応策
レンタルサーバーではMySQLの制限がありワードプレスの利用を諦めている方はいませんか?それを救うのがsqliteです。 ワードプレス本体での公式対応されたかもしれない、内容も解説します。

SQLiteでは動かない機能が多い

MySQLのDBを前提としているため、SQLiteでは動かないケースがあります。

COCOONで使えない機能

人気テーマの「COCOON」実装機能を利用すれば、ほぼ有名なプラグインを追加せず、実現できる機能が多く、利用されている方も多いでしょう。
しかし、投稿一覧の「PV」機能がゼロカウントのままとなり、機能しません。

投稿一覧でアクセス数を実現する方法

function.phpの仕組みや追加の仕方については、省略しています。

このコードにより、「週別・月別・トータル合計」のアクセス数をカウントできます。
このアクセス数を確認することで、不人気・人気ページの把握と適切な記事更新に繋げることができるでしょう。

function.phpへ追加するコード

// 閲覧数を日付ごとに記録する
function track_post_views_per_day($post_id) {
if (!is_single()) return;
if (empty($post_id)) {
global $post;
$post_id = $post->ID;
}
$today = date(‘Y-m-d’);
$views = get_post_meta($post_id, ‘views_’ . $today, true);
$views = ($views) ? $views + 1 : 1;
update_post_meta($post_id, ‘views_’ . $today, $views);
}
add_action(‘wp_head’, ‘track_post_views_per_day’);

// 閲覧数を集計する(週・月・全期間)
function get_views_summary($post_id, $period = ‘daily’) {
$start_date = date(‘Y-m-d’);
$end_date = date(‘Y-m-d’);

switch ($period) {
case ‘weekly’:
$start_date = date(‘Y-m-d’, strtotime(‘-1 week’));
break;
case ‘monthly’:
$start_date = date(‘Y-m-d’, strtotime(‘-1 month’));
break;
case ‘total’: // ★ 全期間分を集計
$start_date = ‘2000-01-01’; // 任意の古い日付を起点にする
break;
}

$date_range = new DatePeriod(
new DateTime($start_date),
new DateInterval(‘P1D’),
new DateTime(date(‘Y-m-d’, strtotime($end_date . ‘+1 day’)))
);

$total_views = 0;
foreach ($date_range as $date) {
$views = get_post_meta($post_id, ‘views_’ . $date->format(‘Y-m-d’), true);
$total_views += ($views) ? $views : 0;
}
return $total_views;
}

// 管理画面の投稿一覧に閲覧数のカラムを追加
function add_views_summary_column($columns) {
$columns[‘views_summary’] = ‘Views Summary’;
return $columns;
}
add_filter(‘manage_posts_columns’, ‘add_views_summary_column’);

// カラムの内容を表示する(★ dailyを削除しtotal追加)
function display_views_summary_column($column_name, $post_id) {
if ($column_name == ‘views_summary’) {
$weekly_views = get_views_summary($post_id, ‘weekly’);
$monthly_views = get_views_summary($post_id, ‘monthly’);
$total_views = get_views_summary($post_id, ‘total’); // ★ 追加

// Dailyは非表示、Totalを表示
echo “Weekly: $weekly_views<br>Monthly: $monthly_views<br><strong>Total: $total_views</strong>”;
}
}
add_action(‘manage_posts_custom_column’, ‘display_views_summary_column’, 10, 2);

コメント