跳至主要內容
找不到符合條件的結果
  • 技術筆記
  • 工具庫
小豬日常
  • 技術筆記
  • 工具庫
小豬日常
首頁 技術筆記 WordPress 單篇文章瀏覽次數計數器實作

WordPress 單篇文章瀏覽次數計數器實作

  • 小豬小豬
  • 2025-12-11
  • 技術筆記

內容目錄

Toggle
  • 前言
  • 透過 wp_head 鉤子更新瀏覽次數
  • 計數函式邏輯解析
  • 實務應用與優化建議
  • 常見問題與注意事項
  • 完整程式碼

前言

在許多網站中,追蹤文章的瀏覽次數是一個常見需求,可以用來分析內容受歡迎程度或作為推薦依據。這段 PHP 程式碼示範如何在 WordPress 單篇文章頁面中,利用文章自訂欄位(post meta)記錄瀏覽次數,適合有基本 WordPress 開發經驗的工程師或自學者。

透過 wp_head 鉤子更新瀏覽次數

WordPress 提供了多種鉤子(hook)讓開發者在不同時機點執行程式碼。這裡選擇使用 wp_head,代表每次載入頁面時會執行計數函式。

add_action( 'wp_head', 'ks_track_post_views' );

這樣可以確保在文章頁面載入時,瀏覽次數會即時更新。

計數函式邏輯解析

函式 ks_track_post_views 主要做以下幾件事:

  1. 使用 is_single() 判斷目前是否為單篇文章頁,避免在首頁或列表頁誤計數。
  2. 取得當前文章 ID。
  3. 從文章自訂欄位 ks_post_views 讀取目前瀏覽次數。
  4. 若已有數值,將其轉為整數後加一;若無則初始化為 1。
  5. 更新文章自訂欄位,寫入新的瀏覽次數。
function ks_track_post_views() {
    if ( is_single() ) {
        global $post;
        $post_id = $post->ID;

        $views = get_post_meta( $post_id, 'ks_post_views', true );
        $views = $views ? intval( $views ) + 1 : 1;
        update_post_meta( $post_id, 'ks_post_views', $views );
    }
}

這段程式碼利用 WordPress 內建的 get_post_meta 和 update_post_meta 函式操作文章自訂欄位,避免直接操作資料庫,維持良好的相容性。

實務應用與優化建議

  • 緩存問題:如果網站使用快取機制,可能會導致瀏覽次數無法即時更新,建議搭配 Ajax 或其他非快取方式更新計數。
  • 防止重複計數:目前邏輯無法區分同一用戶多次刷新,若需更精確的統計,可結合 Cookie 或 Session 控制。
  • 效能考量:大量文章同時更新 meta 可能影響效能,必要時可考慮批次更新或使用專門的統計外掛。

常見問題與注意事項

  • 使用 wp_head 會在每次頁面載入時執行,若頁面包含大量資源,可能會稍微增加伺服器負擔。
  • 確保文章自訂欄位名稱不與其他外掛或主題衝突,這裡使用 ks_post_views 作為前綴。

完整程式碼

<?php

function ks_track_post_views() {
    if ( is_single() ) {
        global $post;
        $post_id = $post->ID;

        $views = get_post_meta( $post_id, 'ks_post_views', true );
        $views = $views ? intval( $views ) + 1 : 1;
        update_post_meta( $post_id, 'ks_post_views', $views );
    }
}
add_action( 'wp_head', 'ks_track_post_views' );
標籤
# PHP# post meta# WordPress# wp_head# 數字動畫
分享
在 Facebook 分享 在 X (Twitter) 分享 在 Line 分享 在 Threads 分享
上一 文章 使用 Python 批量修正 PDF Metadata Title 為檔名
下一 文章 利用短碼控制內容顯示:結合 MemberPress 權限判斷的實作範例

相關文章

使用 PHP 與 DOMDocument 自動產生 WordPress 文章預覽內容

  • 2025-12-13

利用短碼控制內容顯示:結合 MemberPress 權限判斷的實作範例

  • 2025-12-12

使用 Python 批量修正 PDF Metadata Title 為檔名

  • 2025-12-10
版權 © 2025 - Piglife