Google 演算法下的「醫師袍」:打造權威級 WordPress 醫療文章 SEO 模板,我們直接寫進 Code!

2025/07/22 | 數位行銷策略

Google 演算法下的「醫師袍」:打造權威級 WordPress 醫療文章 SEO 模板,我們直接寫進 Code!

大家好,我是浪花科技的 Eric。身為一個整天跟程式碼和伺服器為伍的工程師,我最常被問到的問題之一,除了「網站掛了怎麼辦」之外,就是「為什麼我們家醫師寫的專業文章,內容明明比農場文好一百倍,在 Google 上卻總是找不到?」

這個問題,尤其在醫療、健康、財經這類「Your Money or Your Life」(YMYL) 的領域,更是屢見不鮮。你可能砸大錢請了頂尖的醫師、營養師來撰寫內容,也裝了 Yoast 或 Rank Math 這些 SEO 外掛,把每個燈號都變成了綠色,但流量報告一出來,還是慘不忍睹。坦白說,這就像你穿著頂級西裝,卻忘了最重要的領帶——Google 根本沒把你當回事。

問題的根源在於,對於 YMYL 內容,Google 的審核標準是「醫學中心」等級的。它不只看你文章寫了什麼,更看重「誰寫的」、「誰審核的」、「可信度有多高」。這就是所謂的 E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) 原則。今天,我就不談那些空泛的行銷理論,直接帶你動手,從工程師的視角,打造一個真正能讓 Google 信服的 WordPress 醫療文章 SEO 模板,我們不只談 E-E-A-T,我們直接把它寫進 Code 裡!

為什麼通用 SEO 外掛對醫療內容只是「杯水車薪」?

先別誤會,我不是說 Yoast 或 Rank Math 不好用。它們是很棒的通用工具,能幫你處理 80% 的基礎 SEO 設定。但面對醫療內容,這剩下的 20% 才是決定生死的關鍵。這些外掛就像是成衣,合身,但絕對不是量身訂製。

它們無法理解你文章的「醫學脈絡」。它們不知道這篇文章的作者是執業醫師,也不知道內容經過了同儕審核。對它們來說,一篇由醫學博士寫的論文,跟一篇內容農場抄來的文章,在「結構」上可能沒什麼不同。但對 Google 來說,這兩者有天壤之別。

Google 的 E-E-A-T 不只是行銷術語,更是演算法的「信任指標」

工程師的思維就是把抽象的概念具象化。對我來說,E-E-A-T 不是口號,而是一系列的「數據訊號」(Data Signals)。

  • Experience (經驗): 內容是否來自有第一手經驗的人?(例如:病友分享、醫師臨床經驗)
  • Expertise (專業): 作者是否具備該領域的專業知識?(例如:醫師執照、學術背景)
  • Authoritativeness (權威): 網站和作者在該領域是否被公認為權威?(例如:被其他權威機構引用)
  • Trustworthiness (信賴): 內容是否準確、誠實、安全?(例如:提供參考文獻、清楚標示審稿人)

我們的目標,就是把這些訊號,透過程式碼,清清楚楚、明明白白地告訴 Google。這就是我們打造專屬模板的核心價值。

藍圖規劃:打造一個「會說話」的 WordPress 醫療文章 SEO 模板

好了,囉嗦完了,我們來畫藍圖。一個好的工程師在寫 Code 前,一定會先規劃好架構。我們的模板架構,就是要讓內容的「權威性」可以被系統化地管理與呈現。

第一步:用自訂文章類型 (CPT) 為醫療內容建立專屬王國

首先,我們絕對不能把專業醫療文章跟一般的部落格文章混在一起。我們需要用 Custom Post Type (CPT) 建立一個叫做「醫療新知」(medical_article) 的專屬內容類型。這樣做的好處多多:

  • 結構分離: 醫療文章有自己獨立的管理介面,不會跟網站公告、行銷文章混淆。
  • 客製化彈性: 可以為它設計專屬的分類法(例如:「科別」)和標籤。
  • 權限控管: 可以設定只有特定的使用者角色(例如:「醫師作者」)才能發布或編輯。

你可以在你的主題 `functions.php` 或是自訂外掛中加入以下程式碼來註冊這個 CPT。


// 在 functions.php 或自訂外掛中加入
function register_medical_article_cpt() {

    $labels = array(
        'name'                  => _x( '醫療新知', 'Post Type General Name', 'text_domain' ),
        'singular_name'         => _x( '醫療新知', 'Post Type Singular Name', 'text_domain' ),
        'menu_name'             => __( '醫療新知', 'text_domain' ),
        'archives'              => __( '醫療新知文章', 'text_domain' ),
        'attributes'            => __( '文章屬性', 'text_domain' ),
        'parent_item_colon'     => __( '上層文章:', 'text_domain' ),
        'all_items'             => __( '所有醫療新知', 'text_domain' ),
        'add_new_item'          => __( '新增醫療新知', 'text_domain' ),
        'add_new'               => __( '新增', 'text_domain' ),
        'new_item'              => __( '新文章', 'text_domain' ),
        'edit_item'             => __( '編輯文章', 'text_domain' ),
        'update_item'           => __( '更新文章', 'text_domain' ),
        'view_item'             => __( '檢視文章', 'text_domain' ),
        'view_items'            => __( '檢視文章', 'text_domain' ),
        'search_items'          => __( '搜尋文章', 'text_domain' ),
    );
    $args = array(
        'label'                 => __( '醫療新知', 'text_domain' ),
        'description'           => __( '專業醫療文章', 'text_domain' ),
        'labels'                => $labels,
        'supports'              => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields' ),
        'taxonomies'            => array( 'category', 'post_tag' ),
        'hierarchical'          => false,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 5,
        'menu_icon'             => 'dashicons-health',
        'show_in_admin_bar'     => true,
        'show_in_nav_menus'     => true,
        'can_export'            => true,
        'has_archive'           => true,
        'exclude_from_search'   => false,
        'publicly_queryable'    => true,
        'capability_type'       => 'post',
        'rewrite'               => array('slug' => 'health-info'),
    );
    register_post_type( 'medical_article', $args );

}
add_action( 'init', 'register_medical_article_cpt', 0 );

第二步:用 ACF Pro 打造我們的「數位病歷表」

有了 CPT 這個乾淨的「病房」,接下來我們需要一張功能齊全的「病歷表」,也就是用 Advanced Custom Fields (ACF) 來建立結構化的資料欄位。這一步是整個模板的靈魂,它強迫內容編輯者必須填寫所有證明 E-E-A-T 的資訊。

我們需要建立以下欄位,並將它們指派給 `medical_article` 這個 CPT:

  • 醫學審稿人 (Medical Reviewer): 欄位類型選擇「使用者 (User)」。這個人將是文章內容的背書者,至關重要!
  • 最後審閱日期 (Last Reviewed Date): 欄位類型選擇「日期選擇器 (Date Picker)」。這能直接告訴 Google 內容的時效性和準確性。
  • 參考文獻 (References): 欄位類型選擇「重複器 (Repeater)」,並在裡面建立兩個子欄位:「文獻標題 (Text)」和「文獻網址 (URL)」。這能大幅提升內容的可信度。

身為工程師,我真的得囉嗦一下:把資料結構化,用 ACF 管理,而不是讓編輯在文字編輯器裡隨意排版,不僅能確保資料的完整性,未來要做改版、資料遷移、或是 API 輸出時,都會感謝現在的自己。乾淨的資料,才是王道!

實戰開發:讓模板自動產生 Google 看得懂的「結構化資料」

好戲上場了。前面做的所有準備,都是為了這一步:自動生成 JSON-LD 格式的結構化資料 (Schema.org markup)。這就像是幫你的網頁準備一份「個人履歷」,直接遞給 Google 的爬蟲看。它能幫助 Google 理解:「這不只是一篇文章,而是一篇由某某醫師撰寫、由某某專家審核的專業醫療頁面」。

我們要用的 Schema 類型是 `MedicalWebPage`,它繼承了 `Article` 的屬性,並加入了醫療相關的特定屬性。

把下面的程式碼加到你的 `functions.php` 中。這段程式碼會在你瀏覽 `medical_article` 類型的文章時,自動在網頁的 `` 區塊中插入一段 JSON-LD 指令碼。


// 在 functions.php 中加入,自動生成醫療文章的 JSON-LD Schema
function add_medical_article_schema() {
    // 只在 'medical_article' 的單一文章頁面執行
    if ( !is_singular('medical_article') ) {
        return;
    }

    global $post;

    // 獲取 ACF 欄位資料
    $reviewer_user_id = get_field('medical_reviewer', $post->ID);
    $last_reviewed_date = get_field('last_reviewed_date', $post->ID); // 格式 YYYYMMDD
    $references = get_field('references', $post->ID);

    // 處理作者資訊
    $author_id = $post->post_author;
    $author_data = [
        '@type' => 'Person',
        'name'  => get_the_author_meta('display_name', $author_id),
        'url'   => get_author_posts_url($author_id)
    ];

    // 處理審稿人資訊
    $reviewer_data = [];
    if ($reviewer_user_id) {
        $reviewer_info = get_userdata($reviewer_user_id);
        $reviewer_data = [
            '@type' => 'Person',
            'name'  => $reviewer_info->display_name,
            'url'   => get_author_posts_url($reviewer_user_id)
            // 你可以在使用者個人資料頁面加上更多欄位,如 'jobTitle', 'alumniOf' 等
        ];
    }

    // 處理參考文獻
    $citations = [];
    if ($references) {
        foreach ($references as $ref) {
            $citations[] = [
                '@type' => 'CreativeWork',
                'name' => $ref['reference_title'],
                'url' => $ref['reference_url']
            ];
        }
    }

    $schema = [
        '@context' => 'https://schema.org',
        '@type' => 'MedicalWebPage',
        'mainEntity' => [
            '@type' => 'Article',
            'headline' => get_the_title(),
            'author' => $author_data,
            'datePublished' => get_the_date('c'),
            'dateModified' => get_the_modified_date('c'),
            'publisher' => [
                '@type' => 'Organization',
                'name' => get_bloginfo('name'),
                'logo' => [
                    '@type' => 'ImageObject',
                    'url' => '你的網站 LOGO 圖片網址'
                ]
            ],
            'description' => get_the_excerpt(),
            'articleBody' => wp_strip_all_tags(get_the_content()),
        ],
    ];

    // 如果有審稿人,加入 reviewedBy 屬性
    if (!empty($reviewer_data)) {
        $schema['mainEntity']['reviewedBy'] = $reviewer_data;
    }

    // 如果有最後審閱日期,加入 dateReviewed 屬性
    if ($last_reviewed_date) {
        // ACF 日期選擇器回傳 YYYYMMDD,需轉換為 ISO 8601 格式
        $date_obj = DateTime::createFromFormat('Ymd', $last_reviewed_date);
        if($date_obj) {
             $schema['lastReviewed'] = $date_obj->format('c');
        }
    }

    // 如果有參考文獻,加入 citation 屬性
    if (!empty($citations)) {
        $schema['mainEntity']['citation'] = $citations;
    }

    echo '';
}
add_action('wp_head', 'add_medical_article_schema');

這段程式碼就是魔法發生的地方。它會動態地抓取你在後台填寫的作者、審稿人、審閱日期和參考文獻,並把它們打包成 Google 最喜歡的 JSON-LD 格式。你再也不用手動去產生或擔心格式錯誤了。

前端呈現:把「信任」刻在使用者眼前

別忘了,我們做這一切不只是為了討好 Google,更是為了贏得真實使用者的信任。所以,我們必須把後台的這些 E-E-A-T 訊號,清楚地顯示在前端頁面。

你需要建立一個 `single-medical_article.php` 的佈景主題檔案,來客製化醫療新知文章的顯示樣式。在這個檔案中,你可以使用 `get_field()` 函式來抓取我們用 ACF 建立的欄位值,並把它們顯示在文章的頂部或底部。

例如,你可以在文章標題下方,明確標示出:

  • 作者: [作者姓名與連結]
  • 醫學審稿: [審稿人姓名與連結]
  • 最後更新與審閱日期: [日期]

在文章結尾,可以自動生成一個「參考文獻」區塊,把所有引用的資料來源條列出來。這些小細節,會大幅提升訪客對你網站內容的信任感。

總結:模板不只是工具,更是建立權威的策略

看到這裡,你應該明白了,打造一個專業的 WordPress 醫療文章 SEO 模板,遠不只是安裝幾個外掛那麼簡單。它是一套結合了技術實作 (CPT, ACF)、SEO 策略 (E-E-A-T) 與使用者體驗的完整解決方案。

透過將「信任訊號」直接寫入網站的底層架構,我們讓每一篇發布的醫療文章,都能自動穿上 Google 演算法看得懂的「醫師袍」。這不僅能幫助你的優質內容在搜尋結果中脫穎而出,更是為你的品牌建立長期數位權威的堅實基礎。這是一種投資,一種能隨著時間累積而產生複利效應的策略。

當然,這只是個開始。你還可以整合醫師的個人簡介頁面、診所資訊,甚至串接掛號系統。技術的可能性是無窮的,關鍵在於你是否打好了這個結構化的地基。

延伸閱讀

如果你覺得這些技術細節太過複雜,或是希望為你的醫療機構打造一個更全面、更強大的數位內容平台,別客氣,這正是浪花科技的專業所在。我們專注於為客戶解決複雜的技術問題,打造真正能帶來價值的網站。歡迎點擊這裡與我們聯繫,讓我們聊聊如何讓你的專業知識,在網路上發揮最大的影響力。

常見問題 (FAQ)

Q1: 為什麼我不能只用 Yoast 或 Rank Math 來處理醫療網站的 SEO?

A1: Yoast 或 Rank Math 是優秀的通用型 SEO 工具,但它們缺乏針對醫療內容所需的「信任訊號」的深度整合。例如,它們無法簡單地讓你定義「醫學審稿人」或自動產生包含 `reviewedBy` 的結構化資料。本文介紹的 CPT + ACF 模板方法,是將 E-E-A-T 原則直接內建到網站的內容架構中,這比單純的關鍵字優化要深入得多。

Q2: 使用自訂文章類型 (CPT) 和 ACF 建立模板有什麼具體好處?

A2: 主要好處是「結構化」與「可擴展性」。CPT 讓你的醫療文章與一般文章分離,管理更清晰。ACF 則強迫內容產出者必須填寫如審稿人、參考文獻等關鍵欄位,確保了資料的完整性與一致性。這不僅對 SEO 有利,未來若要將內容輸出成 API、改版網站或進行數據分析,都會變得非常簡單,因為你的資料從一開始就是乾淨且結構化的。

Q3: 我不是工程師,自己加上這些程式碼會不會很困難?

A3: 對於沒有程式背景的使用者來說,直接修改 `functions.php` 檔案確實有風險。操作不當可能導致網站出現「死亡白畫面」。比較安全的做法是使用像 Code Snippets 這類的外掛來新增程式碼,或者最好是建立一個「子佈景主題」來進行修改。如果你的網站至關重要,或希望實現更複雜的功能,強烈建議尋求像浪花科技這樣的專業團隊協助,以確保網站的穩定與安全。

 
立即諮詢,索取免費1年網站保固