工程師視角:手刻 JSON-LD 結構化資料,制霸 AI 時代的 SEO
時間來到 2026 年,如果你的 SEO 知識還停留在關鍵字堆砌,那就太落伍了!在 AI 生成式搜尋(SGE)主導的時代,讓 Google 真正理解你的網站內容,唯有仰賴工程師級的 Schema 結構化資料。我們不再滿足於外掛的 60 分通用解,本篇將帶你脫離舒適圈,直接用工程師最愛的 JSON-LD 格式,透過 WordPress 的 PHP Hooks 手把手實現 Article 和 BreadcrumbList 等複雜結構。立即掌握數據詮釋權,用精確的程式碼確保你的網站在競爭激烈的 AI 搜尋結果中脫穎而出!別讓技術限制了你的流量,這是你升級 SEO 架構的唯一機會。
Google 讀不懂你的網站?工程師視角的 Schema 結構化資料完整實作教學 (JSON-LD 2026版)
嗨,我是 Eric。時間來到 2026 年,如果你還以為 SEO 只是在文章裡塞塞關鍵字(Keywords),那你真的該更新一下知識庫了。現在是 AI 生成式搜尋(SGE)與大型語言模型(LLM)主導的時代,Google 的爬蟲不再只是「讀取文字」,而是在「理解實體(Entities)」之間的關聯。
要讓搜尋引擎和 AI 機器人秒懂你的網站是在賣東西、發新聞還是提供服務,唯一的共通語言就是 Schema 結構化資料(Structured Data)。雖然市面上有一堆 SEO 外掛可以一鍵生成,但身為一名追求極致的工程師,我必須說:外掛產生的通用版 Schema,通常只達到了 60 分的及格線。
今天這篇文章,我們要脫離外掛的舒適圈,直接打開 functions.php,用工程師的視角,手把手教你如何用 PHP 與 JSON-LD 寫出最符合你網站需求的結構化資料。
為什麼 2026 年一定要用 JSON-LD?
在早期的網頁開發中,我們可能會用 Microdata(把標記直接寫在 HTML 標籤裡),那简直是維護地獄。只要前端改版,SEO 標籤就很容易跟著爛掉。
Google 官方早在多年前就強烈建議使用 JSON-LD (JavaScript Object Notation for Linked Data)。它的優點非常工程師友善:
- 資料與視圖分離:它是一段獨立的 JavaScript 腳本,通常放在
<head>或<body>結尾,完全不干擾 HTML 結構。 - 巢狀結構清晰:可以輕鬆描述複雜的關係,例如「這篇文章」的「作者」是「這個人」,而「這個人」隸屬於「這間公司」。
- 動態生成容易:在 WordPress 中,我們可以用 PHP 陣列(Array)構建資料,最後用
json_encode()轉出,乾淨俐落。
實戰:在 WordPress 中手刻 Schema
我們不依賴外掛,而是使用 WordPress 的 Hook 機制,將腳本注入到頁面中。這需要你懂一點 PHP,但我保證這比除錯 CSS 簡單多了。
1. 基礎架構:掛載到 wp_head
首先,我們需要一個基本的函式,掛載到 wp_head Action 上。這樣可以確保我們的 JSON-LD 出現在 <head> 區域。
add_action('wp_head', 'roamer_add_schema_json_ld');
function roamer_add_schema_json_ld() {
// 這裡將是我們構建 Schema 的地方
}
2. 文章(Article)Schema 實作
這是最常見的需求。我們要告訴 Google 這是一篇技術文章,包含標題、發布時間、作者與圖片。
function roamer_add_schema_json_ld() {
// 只在單一文章頁面執行
if ( !is_single() ) return;
global $post;
// 取得精選圖片 URL
$thumbnail_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' );
$image_url = $thumbnail_src ? $thumbnail_src[0] : '';
// 構建陣列
$schema = [
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => get_the_title(),
'image' => [
$image_url
],
'datePublished' => get_the_date('c'), // ISO 8601 格式
'dateModified' => get_the_modified_date('c'),
'author' => [
[
'@type' => 'Person',
'name' => get_the_author(),
'url' => get_author_posts_url( get_the_author_meta( 'ID' ) )
]
],
'publisher' => [
'@type' => 'Organization',
'name' => get_bloginfo('name'),
'logo' => [
'@type' => 'ImageObject',
'url' => 'https://roamer-tech.com/path-to-your-logo.png'
]
]
];
// 輸出 JSON-LD
echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) . '</script>';
}
工程師的小囉嗦: 這裡有個重點,請務必使用 JSON_UNESCAPED_UNICODE,否則你的中文標題會變成一堆 \uXXXX 的亂碼,雖然機器讀得懂,但人類除錯時會看到脫窗。
3. 麵包屑(BreadcrumbList)Schema
麵包屑對於 SEO 結構至關重要,它能讓使用者在搜尋結果頁(SERP)看到層級關係。這段程式碼稍微複雜一點,因為要抓取分類。
// 在上面的函式中加入邏輯
$categories = get_the_category();
if ( !empty($categories) ) {
$breadcrumb_list = [
'@context' => 'https://schema.org',
'@type' => 'BreadcrumbList',
'itemListElement' => [
[
'@type' => 'ListItem',
'position' => 1,
'name' => '首頁',
'item' => home_url()
]
]
];
// 加入第一層分類
$breadcrumb_list['itemListElement'][] = [
'@type' => 'ListItem',
'position' => 2,
'name' => $categories[0]->name,
'item' => get_category_link( $categories[0]->term_id )
];
// 加入當前文章
$breadcrumb_list['itemListElement'][] = [
'@type' => 'ListItem',
'position' => 3,
'name' => get_the_title(),
'item' => get_permalink()
];
echo '<script type="application/ld+json">' . json_encode($breadcrumb_list, JSON_UNESCAPED_UNICODE) . '</script>';
}
4. 進階技巧:巢狀實體與 ID 參照
在 2026 年的 SEO 戰場,單純的 Schema 已經不夠看了。我們需要建立「關聯性」。例如,你可以將 Article 與 Product 關聯,或者在 FAQPage 中參照 Service。
這時候,使用 @id 屬性就非常重要。透過定義全域唯一的 URI(例如 https://your-site.com/#identity),你可以在不同的 Schema 區塊中「指向」同一個實體,而不是重複定義。這能幫助 Google 的知識圖譜(Knowledge Graph)更精確地理解你的網站結構。
為什麼要自己寫?外掛做不到的事
這是我在浪花科技最常被客戶問到的問題:「Eric,裝個 Yoast SEO 不就好了嗎?」
沒錯,對於 80% 的部落格來說,外掛夠用了。但如果你的網站是:
- 複雜的電商平台:需要根據庫存狀態動態改變
ItemAvailability。 - 活動報名網:需要整合
EventSchema 並且有複雜的票價邏輯。 - 醫療或專業服務:需要符合 Google E-E-A-T 的嚴格標準,精確標記
MedicalSpecialty或Physician。
這時候,手寫 PHP 邏輯去生成 JSON-LD 才是唯一的解法。你可以利用 ACF (Advanced Custom Fields) 的欄位資料,直接灌入 Schema 中,這是任何通用型外掛都難以完美做到的。
驗證你的程式碼
寫完程式碼如果不驗證,跟寫完 Code 不寫 Test Case 一樣危險。請善用以下工具:
- Google 豐富搜尋結果測試:這是最權威的標準,直接告訴你 Google 認不認帳。
- Schema.org Validator:用來檢查語法結構是否符合標準規範。
Eric 的總結
Schema 結構化資料是工程師與搜尋引擎溝通的橋樑。在 2026 年,這已經不是「加分項」,而是「基本功」。透過手動實作,你拿回了對資料詮釋權的完全控制。別讓外掛定義你的網站,你才是掌舵的人。
延伸閱讀
如果你想進一步優化你的 WordPress 架構,這裡有三篇我精選的技術文章:
- 流量進不來,不是你的內容差!資深工程師揭秘 WordPress 技術 SEO 三大支柱:速度、結構與程式碼
- WordPress 開發的任督二脈:搞懂 Action & Filter Hooks,客製化功力大爆發!
- 告別手動上架地獄!WooCommerce 商品 API 終極實戰,讓你的庫存、ERP 同步自動化!
需要客製化更複雜的 SEO 結構策略嗎?
別讓技術限制了你的流量。浪花科技隨時準備協助您。
立即聯繫我們
常見問題 (FAQ)
Q1: 使用 JSON-LD 會拖慢網站速度嗎?
幾乎不會。JSON-LD 只是純文字資料,瀏覽器在解析時不會像 CSS 或 JS 那樣阻塞渲染(Render Blocking)。加上 PHP 運算是在伺服器端完成,對前端效能的影響微乎其微。反而是安裝肥大的 SEO 外掛比較容易拖慢後台速度。
Q2: 如果我已經裝了 SEO 外掛,還可以手動加 Schema 嗎?
可以,但要小心重複。如果你手動寫了 Article Schema,記得去外掛設定裡把它的 Article Schema 功能關掉,否則 Google 會看到兩份資料,可能會導致判定混亂。建議是用手寫補足外掛做不到的部分(如進階的 Product 或 Service 關聯)。
Q3: Schema 寫好後多久會出現在 Google 上?
這取決於 Google 的爬蟲頻率。通常在通過驗證並提交 Sitemap 後,幾天到幾週內會有機會出現。但請注意,Schema 只是讓你有「資格」顯示豐富摘要(Rich Snippets),Google 不保證一定會顯示。






