在 WordPress 中使用條件標籤

已發表: 2012-12-27

讓我們看看如何根據滿足某些條件並返回“是”來在主題的不同掛鉤位置中執行自定義函數。

如果您使用像 Genesis 這樣的高級主題框架,您將可以訪問用戶指南。

用戶指南通常包含包含自定義函數的代碼片段。

注意:如果您沒有使用高級主題框架,那麼您需要自己創建自定義函數或找到適用於您的主題的代碼片段。

這些自定義函數可以使用您的主題操作掛鉤在特定主題位置執行。

您需要做的就是將代碼片段粘貼到您的子主題 functions.php 文件中以自定義您的主題功能。

每個主題框架都使用不同的鉤子,但是它們幾乎做同樣的事情,只是被賦予了不同的名稱,例如:

 thesis_after_post genesis_after_post woo_post_after

這 3 個示例都在帖子完成後執行,您可能希望在其中添加小部件區域、橫幅或電子郵件選擇框以及社交共享/關注按鈕。

但是,如果您只希望自定義函數根據某些條件在特定的掛鉤位置執行怎麼辦? 例如:

  • 僅在單個帖子上:is_single()
  • 僅在特定類別的帖子上:is_category()
  • 僅在存檔頁面上:is_archive()
  • 僅在主頁上:is_home()

將條件標記添加到在主題掛鉤位置執行的自定義函數中,使您僅在條件返回“是”時才執行該函數。

注意:在將代碼添加到實時站點之前,您可能希望在本地設置上使用自定義函數的代碼片段測試這些標記。

一旦您習慣了使用自定義函數並了解主題操作掛鉤的工作位置和方式,您就可以更進一步,使用一些開發人員稱之為的條件標籤或條件語句。

那麼如何使用條件語句呢?

條件標記示例

以下是 WordPress 設計人員以及主題和插件開發人員使用的一些常見條件標籤。

 is_home() is_category() is_single() is_page()

首先,讓我們看看使用基於多個語句的條件標籤。

is_single & in_category

 if (is_single() && in_category('134'))
 if (is_single() && in_category('web-design'))

這兩個代碼片段的作用完全相同,並且包含 2 個條件標籤。

第一個使用 134 的類別 ID,第二個使用類別 slug 'web-design'。

您包含在此代碼中的任何功能都只會在包含帖子 ID 134 或頁面 slug 'web-design' 的類別中的單個帖子上執行。 這顯然是網頁設計類別。

參數

正如您在上面的示例中看到的,您可以使用帶有條件標籤的不同參數,例如:

  1. 帖子編號
  2. 帖子標題
  3. 後蛞蝓

像 is_home() 標記這樣的一些條件標記不排除任何參數,可能是因為它們實際上並不需要任何參數。

is_page

 if (is_page('4289'))
 if (is_page('contact'))

這兩個條件標籤也做同樣的事情。

第一個使用 4289 的頁面帖子 ID,第二個使用頁面名稱和 slug 'contact'。

您包含在此標籤中的功能只會在聯繫頁面上執行。

主頁條件標籤

使用 is_home 標籤最常見的用途是僅在主頁上顯示某些內容或將主頁從功能中排除。

is_home

 if (!is_home()

此代碼包含! 在 home_page 條件標記之前,因此它從函數中排除主頁。

 if (is_home()

此代碼創建僅適用於主頁的條件。

工作示例

如果您使用代碼編輯器將以下代碼複製並粘貼到您的子主題函數文件中,您會發現它僅在單個帖子的標題之後打印文本。

 add_action( 'genesis_entry_footer', 'add_content_after_single_posts' ); function add_content_after_single_posts() { if ( is_singular('post') ) { echo 'Content Added After Single Post Entry Footer'; } }

上面的代碼使用帶有is_singular('post')條件標籤的genesis_entry_footer鉤子位置,並且僅在單個帖子的內容之後打印文本。 這是一個經典示例,展示瞭如何在自定義函數中使用條件標籤和主題操作掛鉤。

帶數組的條件標籤

您還可以將數組添加到條件語句中。

is_page (數組

if (is_page(array('contact','37290'))

您可以將更多頁面添加到此數組中,只需將它們包含在此數組中,用逗號分隔即可。

此功能只會在聯繫頁面和包含帖子 id 為 37290 的頁面上執行。

輸出文本/HTML

如果你只是想顯示一些文本或 HTML,你可以在你的主題動作鉤子中添加一個條件語句。 最簡單的方法是使用鉤子插件將條件標籤粘貼到您的 HTML 中。

 if ( ! is_home()) { echo'Your Text Here'; }

讓我們使用一個帶有動作鉤子的通用函數並添加一個條件標籤。

Genesis 中的條件標籤

您可以輕鬆添加用於 StudioPress 主題的 Genesis 主題代碼片段之一,並在代碼中包含條件標記。

 /** Add custom body class to video category */ add_filter( 'body_class', 'add_body_class' ); function add_body_class( $classes ) { if ( is_category( 'video-tutorials' ) ) $classes[] = 'custom-class'; return $classes; }

此代碼使用戶能夠使用自定義類設置視頻類別頁面的樣式。

使用的參數是視頻教程 slug,但是您可以在條件標籤中使用 post.id 或標題。

論文中的條件標籤

讓我們從 DIY 主題用戶指南中獲取自定義函數並添加條件語句。

 function hide_nav_menu() { if(is_page ( 'contact-page' ) ) remove_action ( 'thesis_hook_before_header', 'thesis_nav_menu' ); } add_action ( 'thesis_hook_before_html','hide_nav_menu' );

這將僅隱藏聯繫人頁面上的導航菜單。

我們可以為聯繫頁面使用不同的參數,包括頁面標籤、帖子 ID 或頁面名稱。

把代碼放在哪裡?

如果您使用的是高級主題框架,您可以將代碼粘貼到您的子主題 functions.php 文件中。

這些框架都提供了一個鉤子插件或管理器,使您能夠將代碼粘貼到您希望根據條件標籤執行代碼的鉤子位置。

  • 胡勾經理
  • 創世紀簡單鉤子
  • 論文、進展和 WordPress 鉤子

顯然,如果您使用掛鉤管理器,則不需要在代碼中包含操作掛鉤。

另一種選擇是將條件標籤直接粘貼到您要根據條件執行功能的位置的主題模板文件中。 這不是最佳實踐,因為更新主題時會丟失代碼。

始終是創建子主題並在那裡修改模板文件的最佳實踐。 更好的是,使用您的主題開發人員已經創建的自定義函數,並將代碼粘貼到帶有條件標籤的子主題函數文件中,一旦測試證明它有效。

WordPress 條件標籤和示例

您將在 WordPress Codex 中找到所有 WordPress 條件標籤的列表以及示例。

主題特定條件標籤

一些高級主題還使用他們自己的條件標籤,這些標籤是其主題框架所獨有的。

Woo Commerce 就是其中之一: 示例:

 is_woocommerce() - Returns true if on a page which uses WooCommerce templates is_product_category() - Returns true when viewing a product category archive is_checkout() - Returns true on the checkout page.

了解有關在 Woo Commerce 中使用條件標籤的更多信息。

結論

使用提供大量由開發人員測試的代碼片段的主題是一個巨大的好處。 通過這種方式,您可以選擇 WordPress 提供的任何條件標籤並將其添加到您的代碼片段中,以任何您想要的方式自定義您的主題。