
ワードプレス、PHP8、SQLite、Cocoonの環境下の投稿一覧画面にて、アクセス数を集計する方法を解説します。
SQliteでも最新ワードプレスとPHP8.xで稼働可能
詳しくは、以下を参照してください。

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);



コメント