WordPress Elementor 主題建構器,如何用程式判斷頁面的類型?

WordPress Elementor 外掛中有「主題建構器」功能,可以用來設定網站各個區塊或是版型。可設定的區塊或是版型有頂部、底部、Single Post、Single Page、文章列表、搜尋回應、Error 404。

Elementor 主題建構器

Elementor 主題建構器有以下幾個項目

  • 頂部、底部通常都會設定顯示條件為「整個網站 Entire Site」作為整個站的相同元件。
  • 文章列表用來顯示某一個 Post Type 的列表頁 (Archive)
  • 搜尋回應用來顯示 WordPress 內建的搜尋列表頁 (Archive)
  • Error 404 用來顯示找不到資料的單頁 (Single)
  • Single Post 與 Single Page 分別用於 Post 與 Page 的 Post Type 單頁

你可以搭配 Custom Post Type UI 自行建立 Post Type 和 Taxonomy 分類法後,再到 Elementor 主題建構器中設定 WordPress 該如何顯示這些條件頁面的結果。如果你還不知道什麼是 Custom Post Type 和 分類法 Taxonomy,建議你先閱讀這兩篇文章:

  1. 什麼是 WordPress 的 Post Type? 該如何自訂 Post Type?
  2. 什麼是 WordPress 的分類法 Taxonomy ? 該如何自訂 Taxonomy?

如何用程式判斷 WordPress 裡的頁面類型?

在 WordPress 裡表示單一 Post Type 的頁面我們都稱為 Single,表示單一 Post Type 列表的頁面我們稱為 Archive。你可以透過 Conditional Tags 來判斷目前的頁面是屬於哪一種類型。 經常被使用的有 is_front_page、is_home、is_single、is_archive、is_404、is_search。

方法說明
is_front_page判斷是否為靜態首頁
is_home判斷是否為首頁 (依首頁所選擇設定有所不同,可能是靜態首頁或文章列表頁)
is_single判斷是否為單一 Post Type 頁面
is_archive判斷是否為單一 Post Type 的列表頁
is_404判斷是否為 404 頁面
is_search判斷是否為搜尋頁面
常用來判斷 WordPress 頁面類型的 API

使用 Shortcode 在 Elementor 中示範程式

我們可以透過 WordPress Shortcode API 將 Elementor 與 PHP 程式結合,你可以將註冊 Shortcode 的程式碼放在佈景主題的 functions.php 裡或是可插入程式碼片段的外掛中。

add_shortcode( 'what_type_is_page', 'what_type_is_page_function' );

function what_type_is_page_function( $atts ) {
    if (is_single()) return 'single';
    if (is_archive()) return 'archive';
    return '...';
}

註冊完 shortcode 後,你可以使用 Elementor 的「短代碼」Widget,並輸入我們定義好的 Shortcode:[what_type_is_page] ,它可以回傳出現在這個頁面是屬於哪一種類型的頁面。