同一個頁面,想讓手機訪客看到精簡版、桌機訪客看到完整排版;想讓已登入會員看到專屬內容、未登入訪客只看到註冊引導;甚至想依訪客所在地區換掉促銷區塊。這些需求背後其實是同一件事,叫做「條件顯示」,也就是依訪客的屬性決定要不要顯示某段內容。
問題在於,市面上的 WordPress 條件顯示外掛走的路線差很多。有的綁在區塊編輯器裡,逐個區塊設規則;有的用短代碼包住任意內容,連頁面建構器都能用;還有的乾脆要你寫 PHP。挑錯方向,輕則功能不夠用,重則拖慢網站、甚至被搜尋引擎誤判。這篇會把選擇拆成三個最常見的判斷軸線,也就是裝置、登入狀態、地區,並把主流外掛攤開比較,讓你知道自己的情境該往哪一類走。
條件顯示外掛到底在做什麼
條件顯示外掛的核心邏輯只有一句話,就是「如果符合某個條件,就顯示或隱藏指定內容」。它不是幫你做版面設計,而是在版面之上加一層判斷規則。
實際運作時,外掛會在頁面載入的當下讀取訪客的某些屬性,例如螢幕寬度、是否已登入、IP 對應到的國家,再比對你設定的規則,決定那段內容要不要送到瀏覽器。多數外掛把判斷條件分成幾大類,常見的有以下幾種。
- 裝置與環境:螢幕尺寸(手機、平板、桌機)、瀏覽器種類、作業系統。
- 使用者身分:是否登入、使用者角色(管理員、編輯、訂閱者、WooCommerce 顧客)、會員等級。
- 地理位置:依 IP 判斷的國家、洲別,部分外掛能細到城市或時區。
- 行銷與來源:UTM 參數、推薦來源網址、查詢字串、Cookie。
- 時間排程:指定日期區間、星期幾、一天當中的時段。
理解這個分類很重要,因為後面要選外掛時,你真正要問的不是「哪個外掛最好」,而是「我要用到哪幾類條件,哪個外掛把那幾類做得最順」。
依裝置顯示內容該用哪一類外掛
依裝置顯示是門檻最低的一種條件,大部分外掛的免費版就有,連 WordPress 區塊編輯器本身都已經內建基本能力。
如果你只是想在手機上隱藏一張過大的橫幅、或在桌機才顯示側欄的延伸資訊,區塊層級的外掛最直接。Conditional Blocks 的免費版就提供響應式可見度,可以針對手機、平板、桌機分別設定某個區塊要不要出現,而且能自訂斷點寬度去對齊你的佈景主題。Block Visibility 同樣把螢幕尺寸列為核心條件,設定一樣是選好區塊、勾選要顯示的裝置範圍即可。
要注意的是「隱藏」和「不載入」的差別。多數依裝置顯示的功能是用 CSS 把區塊藏起來,內容其實還是送到了瀏覽器,只是看不到;這對版面調整夠用,但如果是想避免手機載入沉重的元件來省流量,效果就有限。真正要做到「該裝置才載入」通常得搭配伺服器端判斷或更進階的設定。挑外掛時可以看它的說明寫的是 hide 還是 don’t load,兩者用途不同。
依登入狀態與會員角色顯示內容怎麼選
依登入狀態顯示是會員制網站最常用的條件,而且幾乎每一款條件顯示外掛的免費版都支援最基本的「登入才看得到」與「未登入才看得到」兩種切換。
Conditional Blocks 免費版的使用者狀態條件,就是專門給這個情境用的,可以讓某個區塊只對已登入或只對未登出的訪客顯示,很適合做會員專屬段落或註冊引導。Block Visibility 在這之上再往細處走,能限制到特定使用者角色,例如只給編輯看的後台提示、只給 WooCommerce 顧客看的優惠區。
登入狀態與角色的差別在於顆粒度。「是否登入」是一道是非題,設定最簡單;「角色」則是把登入的人再分群,管理員、訂閱者、付費會員可以各看各的。如果你的需求只是區分會員與訪客,免費版的登入狀態條件就夠;一旦要依會員等級給不同內容,就要確認外掛是否支援角色判斷,以及能不能跟你用的會員外掛(例如 Paid Memberships Pro、MemberPress)整合。Conditional Blocks 與 Block Visibility 的進階版都有對接這類會員系統,能直接依會員方案顯示內容,省去自己判斷的麻煩。
這裡有個常被忽略的細節,就是登入狀態判斷和頁面快取容易打架,後面會專門講。
依地區顯示內容的外掛與要留意的風險
依地區顯示是這三類條件裡最吃技術、也最容易踩雷的一種,因為它牽涉到 IP 判斷的準確度、頁面快取,以及搜尋引擎怎麼看待你的頁面。
功能上,地區條件通常分成兩種精度。多數外掛(例如 Conditional Blocks 進階版)依 IP 判斷到國家或洲別,適合做地區限定的優惠、或依國家切換語言提示;若需要更高精度,If-So 這類專門做動態內容的外掛會搭配付費的 IP 對應資料庫,甚至串接瀏覽器的 HTML5 地理位置 API,能判斷到城市、行政區或時區。對台灣的站台來說,如果只是要區分「台灣訪客」和「海外訪客」,國家層級的判斷已經足夠;要做到縣市等級的精準投放,才需要考慮更貴的方案。
真正的風險有兩個。第一個是和頁面快取的衝突。台灣常見的效能優化外掛(像 WP Rocket)或 CDN 會把頁面存成靜態快照再回傳給所有訪客,這個快照不會因人而異,於是「依地區換內容」的邏輯就失效了,所有人都看到第一個被快取起來的版本。比較成熟的外掛會用 AJAX 在頁面載入後另外去抓地區專屬內容,繞過快取;選外掛時務必確認它寫明相容頁面快取,否則上線後會發現規則根本沒生效。
第二個風險和 SEO 有關。如果你是「依地區替換整段內容」,要小心別讓 Google 看到的版本和一般訪客差太多,因為依來源給搜尋引擎和使用者看截然不同的內容,可能被判定為偽裝內容(cloaking)。穩健的做法是讓搜尋引擎爬到的是「預設內容」,地區差異只在使用者端疊加;像 If-So 就強調 Google 看到的是預設版本,以此降低風險。如果是依地區「自動轉址」,更要謹慎,設定不當容易造成索引混亂。一個保守的原則是,把地區判斷用在「附加」資訊(例如多顯示一則在地優惠),而不是「抽換」整個頁面主體。
主流條件顯示外掛功能比較
把前面三類需求放在一起看,主流外掛其實分成三種設計取向:綁在區塊編輯器、用短代碼包任意內容、以及用 PHP 自己寫。下表整理常被拿來比較的幾款,協助你對照自己的情境。
| 外掛 | 設計取向 | 免費版可做 | 進階版加值 | 適合誰 |
|---|---|---|---|---|
| Conditional Blocks | Gutenberg 區塊層級 | 登入狀態、響應式裝置、鎖定(對所有人隱藏) | 地理位置、角色、瀏覽器、排程、WooCommerce、AND/OR 邏輯 | 用區塊編輯器、想精準控制單一區塊的人 |
| Block Visibility | 區塊編輯器 + 完整網站編輯 | 螢幕尺寸、登入狀態、角色、查詢字串等多項條件 | 更多整合(ACF、WP Fusion、EDD)、排程 | 重度使用 FSE 佈景、需要多種整合的人 |
| If-So Dynamic Content | 短代碼 + 區塊 + 頁面建構器 | 基本條件與 If-Then 邏輯 | 20 多種條件、精準地理位置、A/B 測試、CSV 批次個人化 | 用 Elementor 等建構器、需跨頁面建構器一致運作的人 |
| ACF Blocks | PHP 模板(需開發) | 依自訂欄位、角色等用 PHP 判斷 | 屬 ACF PRO,搭配彈性內容、中繼資料等 | 開發者、需要高度客製邏輯的團隊 |
從這張表可以看出幾個選擇重點。
- 如果你站台已經全面用區塊編輯器,Conditional Blocks 或 Block Visibility 是最自然的選擇,設定就在區塊的側邊欄,所見即所得。兩者免費版都涵蓋了裝置與登入狀態這兩類最常用的條件。
- 如果你用 Elementor 或其他頁面建構器,區塊層級的外掛會搭不上,這時 If-So 的短代碼做法比較通用,因為它不綁定特定編輯器,把要顯示的內容包進一段短代碼,放到哪裡都能運作。
- 如果你需要把多個條件用 AND/OR 串起來(例如「行動裝置」且「已登入會員」才顯示),要特別確認外掛支援組合邏輯。Conditional Blocks 進階版明確支援這種多條件分組,而免費版多半只能設單一條件。
- 如果你的邏輯複雜到外掛選單擺不下,或團隊本來就有開發能量,用 ACF Blocks 以 PHP 模板自己寫判斷反而最靈活,缺點是要會寫程式、也要自行維護。
條件顯示用得對,網站體驗才會真的變好
選 WordPress 條件顯示外掛的關鍵不在功能誰最多,而在你要用到哪幾類條件、站台用什麼編輯環境。先確認自己的需求落在裝置、登入狀態、地區的哪幾軸:只動裝置與登入狀態,免費版的區塊外掛多半就能解決;要做精準地區投放或多條件組合,才需要進階版或專門的動態內容外掛;邏輯特別刁鑽且團隊能寫程式,PHP 模板的路線最自由。
不論選哪一款,上線前都要做兩件檢查。一是確認它相容你正在用的頁面快取或 CDN,否則依登入狀態、依地區的規則很可能在快取下失效;二是地區或個人化內容盡量用「附加」而非「抽換整頁」,讓搜尋引擎看到穩定的預設版本,避免被判定為偽裝內容。把這兩點顧好,條件顯示才會真正幫到訪客,而不是變成上線後才發現的隱形地雷。