核心原理
WordPress 提供豐富的條件標籤,讓主題開發者在模板中依頁面類型、分類、作者、日期等條件,靈活控制內容顯示邏輯。
基本語法模式
<?php if (is_home()) : ?>
<!-- 僅首頁顯示:友情連結 -->
<div class="blogroll">...</div>
<?php endif; ?>
<?php if (is_single()) : ?>
<!-- 文章頁顯示:相關文章 -->
<?php else : ?>
<!-- 其他頁面顯示:廣告 -->
<?php endif; ?>
分類完整條件標籤速查表
1. 文章/單一文章頁面
| 函式 | 說明 | 參數範例 |
is_single() | 任意單一文章頁 | - |
is_single('42') | ID 為 42 的文章 | ID |
is_single('Hello World') | 標題為 "Hello World" | 標題 |
is_single('hello-world') | Slug 為 hello-world | Slug |
is_single([42, 'hello-world']) | 多條件陣列(OR 關係) | 陣列 |
comments_open() | 是否開放留言 | - |
pings_open() | 是否開放 Pingback/Trackback | - |
2. 頁面
| 函式 | 說明 |
is_page() | 任意頁面 |
is_page('42') | ID 42 |
is_page('About Me') | 標題判斷 |
is_page('about-me') | Slug 判斷 |
3. 分類/標籤/分類法
| 函式 | 說明 |
is_category() | 任意分類封存頁 |
is_category(6) | ID 6 |
is_category('Cheeses') | 名稱/Slug |
in_category(5) | 當前文章屬於分類 5(單文頁常用) |
is_tag() | 任意標籤頁 |
is_tax('genre') | 自訂分類法 |
4. 作者封存
| 函式 | 說明 |
is_author() | 任意作者頁 |
is_author(1337) | ID 1337 |
is_author('Elite Hacker') | 暱稱 |
is_author('elite-hacker') | Slug |
5. 日期/封存/搜尋/其他
| 函式 | 說明 |
is_date() | 任意日期封存 |
is_year() / is_month() / is_day() / is_time() | 年/月/日/時間封存 |
is_archive() | 任意封存頁(分類/標籤/日期/作者) |
is_search() | 搜尋結果頁 |
is_404() | 404 頁面 |
is_paged() | 分頁頁面(/page/2 等) |
is_attachment() | 附件頁 |
is_feed() | Feed 頁面 |
is_trackback() | Trackback 頁面 |
is_preview() | 預覽模式 |
is_front_page() | 網站首頁(含靜態首頁設定) |
is_home() | 文章索引頁(預設首頁) |
實戰組合技巧
1. 僅首頁第一頁顯示(排除分頁)
<?php if (is_home() && !is_paged()) : ?>
<!-- 首頁專屬輪播 -->
<?php endif; ?>
2. 文章頁且屬於特定分類
<?php if (is_single() && in_category('news')) : ?>
<!-- 新聞類文章專屬版面 -->
<?php endif; ?>
3. 側邊欄小工具支援 PHP
預設小工具不執行 PHP。安裝 PHP Code Widget 或 Widget Logic 外掛,或在 functions.php 加入:
add_filter('widget_text', 'do_shortcode'); // 允許短代碼
// 或
add_filter('widget_text', function($text) {
return eval('?>' . $text); // 高風險,僅信任管理員環境
});
偵錯技巧
<?php if (current_user_can('manage_options')) : ?>
<pre><?php
var_dump([
'is_home' => is_home(),
'is_front' => is_front_page(),
'is_single' => is_single(),
'is_page' => is_page(),
'paged' => get_query_var('paged')
]);
?></pre>
<?php endif; ?>
結語
善用條件標籤能讓主題邏輯清晰、效能優化(避免不必要查詢)。建議收藏本速查表,開發時隨查隨用。