WordPress 流量統計教學

在經營自架 WordPress 部落格的過程中,流量數據是一個至關重要的指標,不僅能幫助我們了解哪些內容受歡迎,也能讓我們進一步優化網站。然而,許多博主可能都遇到過這樣的問題:網路上雖然有不少提供流量統計功能的插件,但其中許多高級功能(例如顯示網站總流量)往往需要付費解鎖。甚至有些插件免費提供單篇文章的流量統計,但若要實現更全面的數據展示,例如整個網站的流量總和,卻必須購買訂閱或升級到專業版。

對於資源有限的個人博主或初創網站來說,這樣的費用可能成為一個不小的負擔。特別是當我們僅僅需要一個簡單的功能時,付費解鎖完整插件可能並不劃算。同時,許多插件功能繁雜,可能會增加網站的負擔,影響性能。

基於這樣的背景,自己撰寫程式碼來實現流量統計功能,成為一個經濟又實用的解決方案。不僅可以完全免費,還能根據自己的需求量身定制。例如,我們可以在每篇文章中顯示點擊次數,並在首頁或側邊欄上顯示整個網站的流量總數,讓訪客也能看到網站的受歡迎程度。

更棒的是,這樣的解決方案並不複雜,即使你對程式設計不是很熟悉,也可以透過簡單的教學輕鬆實現。不僅可以學習到一些基礎的 WordPress 開發知識,也能讓你的網站更有個性化的功能,為讀者帶來更好的體驗。希望這篇教學能幫助更多人以低成本實現這些目標!

在自架的 WordPress 網站上,可以透過撰寫程式碼來實現文章流量統計和首頁顯示總流量的功能。以下是實現方法的詳細步驟。

步驟一:安裝必要的環境

  • 備份網站:在開始修改之前,務必備份你的網站和資料庫,以防萬一。
  • 建立子主題 (Child Theme):如果你正在使用主題,建議建立子主題來進行修改,避免主題更新覆蓋程式碼。

步驟二:記錄文章流量

1. 在文章每次被訪問時更新流量

將以下程式碼加入子主題的 functions.php


// 增加文章流量計數
function update_post_views($post_id) {
    if (!is_single()) return; // 確保只在單篇文章頁執行
    if (empty($post_id)) $post_id = get_the_ID();
    
    // 獲取當前流量
    $views = get_post_meta($post_id, 'post_views', true);
    $views = $views ? $views : 0;
    $views++;
    
    // 更新流量數據
    update_post_meta($post_id, 'post_views', $views);
}

// 在 WordPress 初始化時觸發
add_action('wp_head', function() {
    if (is_single()) {
        update_post_views(get_the_ID());
    }
});

程式說明第一段:增加文章流量計數

// 增加文章流量計數
function update_post_views($post_id) {
    if (!is_single()) return; // 確保只在單篇文章頁執行
    if (empty($post_id)) $post_id = get_the_ID();
    
    // 獲取當前流量
    $views = get_post_meta($post_id, 'post_views', true);
    $views = $views ? $views : 0;
    $views++;
    
    // 更新流量數據
    update_post_meta($post_id, 'post_views', $views);
}
解釋及說明:
  1. function update_post_views($post_id)

    • 這是一個名為 update_post_views 的函式(就像一個會完成任務的小機器人)。
    • 它會執行「計算文章流量」的工作。
    • $post_id 是文章的編號,用來確保只記錄某篇特定文章的流量。
  2. if (!is_single()) return;

    • 這一句是在檢查目前是不是正在瀏覽一篇文章。
    • 如果不是(例如在首頁或分類頁),就什麼都不做,直接結束。
  3. if (empty($post_id)) $post_id = get_the_ID();

    • 這一句是在確認 $post_id 是否有值(也就是這篇文章的編號是否已經知道)。
    • 如果不知道,就用 WordPress 的函式 get_the_ID() 自動取得文章編號。
  4. $views = get_post_meta($post_id, 'post_views', true);

    • 這是在取得這篇文章目前的流量數字。
    • get_post_meta 是 WordPress 提供的工具,用來讀取文章的附加資料(這裡是「post_views」這個數字)。
  5. $views = $views ? $views : 0;

    • 如果找到這篇文章的流量數字,直接使用這個數字;
    • 如果找不到,就讓數字從 0 開始。
  6. $views++;

    • 這是將流量數字加 1,表示文章被看了一次。
  7. update_post_meta($post_id, 'post_views', $views);

    • 將更新後的流量數字儲存到文章資料中。


程式說明第二段:觸發這個函式

// 在 WordPress 初始化時觸發
add_action('wp_head', function() {
    if (is_single()) {
        update_post_views(get_the_ID());
    }
});

條列式解析:

  1. add_action('wp_head', function() { ... });

    • 這是在 WordPress 的「頭部」部分加一個任務。
    • 「頭部」是每次網頁載入時,WordPress 都會執行的地方。
  2. if (is_single()) {

    • 確認目前瀏覽的是否是一篇文章。
    • 如果是,就執行裡面的內容。
  3. update_post_views(get_the_ID());

    • 呼叫剛才寫好的 update_post_views 函式,並傳入文章的編號(用 get_the_ID() 取得)。
    • 它的作用是幫這篇文章增加 1 次流量。

這段程式碼的工作原理如下:

  1. 當有人點進一篇文章時,update_post_views 函式會開始運作。
  2. 它會取得這篇文章目前的流量數字,加 1 後再存回去。
  3. 透過 add_action,這個計算過程會在每次有人訪問文章時自動執行。

小比喻

  • update_post_views 就像一本記事本,它會記錄「某篇文章被看了幾次」。
  • 每次有人點進文章,系統會先翻開記事本看看流量數字,然後將數字 +1,最後再寫回去。

這樣一步步解釋,應該能讓初學者輕鬆理解! 😊

2. 顯示每篇文章的流量

在主題模板檔案 (例如 single.php) 中適當的位置插入以下程式碼://

文章流量 function get_post_views($post_id) { $views = get_post_meta($post_id, 'post_views', true); return $views ? $views : 0; } // 使用方式:在模板中調用 echo '本文章流量:' . get_post_views(get_the_ID());

步驟三:首頁顯示總流量

1. 計算所有文章的流量總和

在子主題的 functions.php 中添加以下函式:


// 計算網站總流量
function get_total_site_views() {
    $args = array(
        'post_type' => 'post', // 只統計文章,若需要統計頁面可加上 'page'
        'posts_per_page' => -1, // 獲取所有文章
        'fields' => 'ids', // 僅獲取文章 ID
    );

    $posts = get_posts($args);
    $total_views = 0;

    foreach ($posts as $post_id) {
        $views = get_post_meta($post_id, 'post_views', true);
        $total_views += $views ? $views : 0;
    }

    return $total_views;
}
    

2. 在首頁模板顯示總流量

index.php 或首頁模板適當位置插入以下程式碼: 

echo '網站總流量:' . get_total_site_views();

 

步驟四:進階功能(可選)

  • 快取數據:如果你的網站文章很多,計算總流量可能會影響效能,可以使用 Transients API 快取結果。
  • 流量篩選:可進一步設置只記錄真實用戶流量(如排除機器人訪問)。
  • 後台管理:透過 WordPress 管理後台顯示這些數據(可在「儀表板」新增一個 widget)。

這樣一來,就可以實現文章流量計數和總流量顯示的功能了!

arrow
arrow
    創作者介紹
    創作者 黃健哲 的頭像
    黃健哲

    小黃老師嘿技術

    黃健哲 發表在 痞客邦 留言(0) 人氣()