用 GeneratePress 架站到一定程度後,你會發現一件事:佈景主題本身的設定面板,永遠跟不上你想做的版面。你想在所有文章內容下方放一個作者介紹欄、想讓某個分類底下的文章都套同一張主視覺、想把追蹤碼塞進頁首又不想改 functions.php,這些事用佈景主題的客製器都做不到。GeneratePress Elements 模組就是補這塊缺口的工具,它讓你不碰一行佈景主題核心檔案,就能把自己設計的內容「掛」進網站的任何位置。
這篇要講的不是「Elements 有哪幾種」的名詞解釋,而是怎麼用 Elements 的鉤子(Hook)機制,實際接管頁首、頁尾與內文之間的每一個插入點。讀完你會知道四種 Element 各自的定位、GeneratePress 有哪些可用鉤子、它們對應到頁面的哪個物理位置,以及怎麼用顯示規則精準控制「誰看得到、誰看不到」。
GeneratePress Elements 模組是什麼,為什麼要用它
Elements 是 GeneratePress Premium 提供的內容注入系統,讓你把一段設計好的內容套用到多個頁面或文章,而不必逐篇手動貼。它最大的價值在於「集中管理、規則套用」:你只建立一次,透過顯示規則決定它出現在哪裡,日後要改也只改這一處,全站同步更新。
要啟用它,先到「外觀 → GeneratePress」把 Elements 模組打開,接著「外觀 → Elements」就會出現在後台選單。所有 Element 都建立在這裡,像文章與頁面一樣有獨立的清單可以管理。
目前 GeneratePress 提供四種 Element 類型,各自負責不同的工作:
- Block(區塊):用 WordPress 區塊編輯器搭配 GenerateBlocks 外掛,視覺化建立內容,再掛進網站。這是現在最該優先學的一種,後面會詳細展開。
- Hook(鉤子):一個純文字框,讓你貼入程式碼、短代碼或追蹤碼,再選一個鉤子位置注入。適合放 PHP、JavaScript、第三方腳本。
- Layout(版面):逐篇控制要顯示或隱藏哪些頁面元件,例如某篇文章關掉側邊欄、調整內容寬度、隱藏標題或精選圖片。
- Header(頁首):現在主要用途是「合併頁首」,把 logo 與導覽列疊進主視覺背景圖上方,做出透明選單的效果。
四種類型有一個共同的核心:顯示規則(Display Rules)。不管你建立哪一種,都要透過顯示規則告訴它「要在哪裡出現」,否則它建好了也不會顯示在任何地方。
GeneratePress 的鉤子是什麼,它接住的是頁面哪個位置
鉤子是佈景主題在頁面結構裡預先埋好的插入點,讓你把自己的內容「掛」進去而不必改動主題核心檔案。GeneratePress 在頁首、導覽列、內容區、頁尾等位置都布了鉤子,你只要選對名稱,內容就會精準出現在那個物理位置。
理解鉤子的關鍵,是把一個頁面想成由上到下的幾個區塊:最外層的 HTML 標頭、視覺上的頁首、導覽列、主內容區、文章內容本身,最後是頁尾。每一個交界處都有對應的鉤子。下表整理常用鉤子與它們接住的位置:
| 鉤子名稱 | 物理位置 | 典型用途 |
|---|---|---|
wp_head |
HTML <head> 區段內 |
追蹤碼、驗證碼、自訂 meta 標籤 |
wp_footer |
頁面結束 </body> 前 |
延遲載入的腳本、聊天小工具 |
generate_before_header |
視覺頁首之前 | 公告列、優惠橫幅 |
generate_after_header |
頁首之後、內容之前 | 麵包屑、頁面主視覺 |
generate_before_content |
主內容容器開始處 | 內容區頂部的提示框 |
generate_after_content |
文章內容結束後 | 作者介紹欄、相關文章、文末行動呼籲 |
generate_before_footer |
頁尾之前 | 電子報訂閱區、聯絡橫幅 |
generate_after_footer |
頁尾之後 | 版權列、回到頂端按鈕 |
generate_inside_navigation |
導覽列容器內 | 導覽列右側的搜尋框或按鈕 |
官方文件附有一份鉤子視覺指南,用截圖標出每個鉤子在文章頁、單篇頁、靜態頁與彙整頁上的確切位置。第一次接觸時,建議對照那份圖實際看一遍,比死記名稱有效得多,因為同一個鉤子在不同頁面類型上的相對位置可能略有差異。
Hook 元素與 Block 元素的差別,該用哪一個
這是新手最容易混淆的一點:GeneratePress 其實有兩種「掛鉤子」的方式,一個叫 Hook 元素,一個是 Block 元素裡的 Hook 類型,兩者功能重疊但適用情境不同。
Hook 元素是一個單純的文字框。你在框裡貼程式碼、短代碼或腳本,選一個鉤子位置,內容就注入進去。它不會幫你排版,也沒有視覺編輯器,適合的是不需要外觀、純粹要「執行」的東西。最典型的例子是把網站分析的追蹤碼掛在 wp_head,或把一段 PHP 邏輯掛進內容後方。
Block 元素則是用 WordPress 區塊編輯器來建立內容,所見即所得。當你建立 Block 元素時,會先選一個 Block Type(區塊類型),其中一種就是 Hook。選了 Hook 之後,你一樣是挑一個鉤子位置注入,差別在於你掛進去的不是一段裸程式碼,而是一整塊用區塊排版好、有顏色有間距的設計。作者介紹欄、文末行動呼籲框、優惠橫幅這類「要好看」的東西,都該走 Block 元素的 Hook 類型。
判斷準則很簡單:要注入的是程式碼或腳本,沒有版面需求,用 Hook 元素;要注入的是有設計、需要排版的內容區塊,用 Block 元素的 Hook 類型。兩者的顯示規則機制完全一樣,差別只在「內容是怎麼做出來的」。
用 Block 元素的 Hook 類型實際掛一個文末作者欄
理解了概念,來走一次完整流程。以最常見的需求為例:在所有文章內容下方,自動顯示一個作者介紹欄。這個需求用 Block 元素的 Hook 類型來做最合適,因為作者欄需要圖片、文字與邊框排版。
第一步、安裝 GenerateBlocks 外掛。它是 GeneratePress 同一位開發者 Tom Usborne 的作品,與 Block 元素深度整合,免費版就有容器(Container)、網格(Grid)、標題(Headline)、按鈕(Buttons)四個區塊,足以排出大多數版面。要注意的是,第三方區塊外掛在 Block 元素裡常常無法正確套用樣式,因為它們是掃描頁面內容來編譯 CSS,而 Block 元素不在頁面內容裡;WordPress 核心區塊與 GenerateBlocks 則沒有這個問題。
第二步、建立 Element。到「外觀 → Elements → Add New Element」,類型選 Block,建立後在內容區用 GenerateBlocks 排版。常見做法是放一個容器區塊管邊框與內距,裡面用網格區塊切成左右兩欄,左欄放作者頭像,右欄放姓名與簡介。
第三步、設定注入位置。在編輯器右側的 Block Element Settings 面板,把 Block Type 設成 Hook,鉤子選 generate_after_content,這樣它就會出現在每篇文章內容結束之後。
第四步、設定顯示規則。在 Location 選「Post → All Posts」,代表只在所有文章顯示、不在頁面顯示。發布後打開任何一篇文章,作者欄就會自動出現在內文下方。
同樣的流程換個鉤子,就能做完全不同的東西:鉤子改成 generate_before_header,內容換成公告文字,就成了全站頂部的公告列;鉤子改成 generate_before_footer,內容換成電子報訂閱框,就成了頁尾上方的訂閱區。一旦掌握「設計內容 → 選鉤子 → 設顯示規則」這個三段式節奏,要接管頁面任何一個位置都是同一套動作。
顯示規則怎麼設定,才不會出現在不該出現的地方
顯示規則是 Elements 的控制中樞,由三組設定組成:Location(位置)、Exclude(排除)、Users(使用者)。Location 決定元素在哪裡出現,Exclude 決定哪裡不出現,Users 決定哪些使用者角色看得到。
Location 可以設得很廣,也可以很精準。你可以選「整個網站」讓元素全站顯示,也可以細到指定某個分類底下的所有文章,甚至單一一篇特定文章。Exclude 則是反向操作,最常見的用法是「全站顯示,但排除某個頁面」,例如一個全站公告列,唯獨不想出現在結帳頁,就在 Location 設全站、Exclude 設那個頁面。
要特別小心顯示規則互相衝突。如果你有兩個元素都掛在同一個鉤子、又都套用到同一篇文章,兩個會同時出現,可能不是你要的結果。當多個元素掛在同一個鉤子時,可以用 Priority(優先順序)設定它們的上下順序,數字較小的會排在較上方。規劃多個元素前,先想清楚每個元素的顯示範圍會不會重疊。
Users 設定在多作者網站特別有用。如果你想為不同作者顯示不同的作者欄,可以建立多個 Block 元素,各自用 Users 綁定對應的作者角色,這樣每位作者的文章就會帶出屬於自己的介紹欄。
用 Block 元素接管整個頁首與頁尾,而不只是插入內容
前面講的都是「在既有頁首頁尾旁邊插入內容」,但 Block 元素的能力不止於此,它可以直接取代 GeneratePress 預設的頁首、頁尾、側邊欄與主視覺。建立 Block 元素時,Block Type 除了 Hook,還有 Site Header(站台頁首)、Site Footer(站台頁尾)、Right Sidebar、Left Sidebar、Page Hero 等多種類型,目前總共有十種子類型。
選 Site Footer,你就能用 GenerateBlocks 從零設計一個頁尾,取代主題原本的頁尾區塊,想放幾欄連結、訂閱框、社群圖示都自己排。選 Page Hero 配合 GenerateBlocks 的動態資料功能,可以做出一張主視覺,讓它自動帶入每篇文章自己的標題與精選圖片,等於一套設計套用到整個分類,而每篇文章顯示的內容各不相同。
這裡有個歷史包袱要釐清。Header 元素裡也有一個 Page Hero 選項,那是 WordPress 4 時代留下來的舊功能,現在 Header 元素的主要用途已縮減到「合併頁首」,也就是把 logo 與導覽列疊進主視覺背景上做透明選單。真要做主視覺,用 Block 元素的 Page Hero 類型,它有視覺編輯器、能套用動態資料,比舊版彈性大得多。Header 元素就留給合併頁首這個單一任務即可。
要注意的是,動態資料功能(自動帶入文章標題、精選圖片等)需要搭配 GenerateBlocks 才能使用,這也是為什麼官方一再建議 Block 元素配 GenerateBlocks 的原因。
元素建好卻沒顯示,通常是哪裡出問題
掛了鉤子卻看不到內容,是上手過程中最常遇到的狀況,原因幾乎都集中在幾個地方。最常見的是顯示規則沒設或設錯:Block 元素就算內容做好了,只要 Location 留空,它就不會出現在任何頁面,因為系統不知道該把它放到哪。先回到顯示規則確認 Location 有指定範圍。
第二個常見原因是鉤子選錯了頁面類型。同一個鉤子在文章頁、靜態頁、彙整頁上的存在與位置不完全一致,如果你把元素掛在某個鉤子、顯示規則卻指向一個沒有那個鉤子的頁面類型,自然看不到。對照官方的鉤子視覺指南,確認你選的頁面類型上確實有那個鉤子。
第三個是顯示規則被另一條規則蓋掉,例如 Location 設了全站,Exclude 卻不小心也涵蓋了你正在看的頁面。第四個是用了第三方區塊外掛排版,樣式沒被正確編譯,內容其實有出現但看起來像空白或破版,這時換成 GenerateBlocks 或 WordPress 核心區塊重做即可。
排查順序建議由近到遠:先確認顯示規則的 Location 與 Exclude,再確認鉤子與頁面類型相符,最後才檢查內容本身與排版外掛。多數「沒顯示」的問題在前兩步就會找到答案。
把 Elements 與鉤子變成你日常架站的標準動作
GeneratePress Elements 真正的價值,不在於它能做出多炫的版面,而在於它把「全站一致的內容」與「逐頁的內容」徹底分開管理。需要重複出現的東西就做成 Element,靠顯示規則決定出現範圍,日後維護只動一處;屬於單篇的內容才寫進文章本身。釐清這條界線,你的網站結構會清爽很多,改版也不再牽一髮動全身。
接下來最值得投資的,是把 GenerateBlocks 練熟,再對照官方的鉤子視覺指南,把每個鉤子實際掛一次內容看看效果。當「設計內容、選鉤子、設顯示規則」變成你不用思考就能完成的反射動作,頁首、頁尾與內文之間的每一個位置,就都在你的掌控之中了。