如何將條件邏輯添加到您的 WordPress 主題

已發表: 2021-02-25

使用 WordPress 構建網站可為您在設計和功能方面提供極大的靈活性。 而且,隨著您對主題開發的深入了解,您會發現有時您需要針對特定頁面、類別或帖子類型來定位特殊內容。 這就是條件邏輯可以使您的工作更輕鬆的地方。

條件邏輯是編程語言(在我們的例子中是 PHP)的一個強大特性。 本質上,我們可以使用代碼檢查某個條件是否存在,然後在滿足該條件時執行特定的操作。 一個簡單的例子是檢查用戶當前是否在我們網站的主頁上。 使用條件邏輯,我們可能會選擇在這種情況下加載滑塊或其他特殊內容。

關於 WordPress,軟件中內置了許多有用的條件標籤,可以讓我們測試各種場景。 它們有據可查,可讓您為您的網站帶來更高級別的功能。

今天,我們將看看一些更常用的條件標籤,以及如何將它們實施到您自己的網站中。

使用條件標籤的注意事項

條件標籤是一些 PHP 代碼,應該進入您網站的活動主題。 有很多地方可以在主題中使用條件邏輯。

如果您還沒有這樣做,最好熟悉 WordPress 模板層次結構,以了解主題文件的工作原理。

而且,在您嘗試在實時站點上實現新代碼之前,最好先設置一個開發(登台)環境來測試。 請記住,使用 PHP 的一個錯誤舉動會給您的網站帶來可怕的“死機白屏”。 因此,在實際站點上工作之前,請務必小心進行測試。

is_home()

這在開發人員中引起了極大的混亂。 通過查看標籤,您會假設is_home()將用於檢查您網站的主頁。 事實並非如此。

它實際上會查找分配為您的帖子頁面的頁面,該頁面在 WordPress 儀表板內的設置 > 閱讀中設置。 默認情況下,WordPress 使用您的主頁來列出帖子——但大多數網站傾向於使用靜態主頁。

因此,例如,如果您指定了一個名為“Blog”的頁面作為您的帖子頁面,這就是is_home()將查找的內容。

 <?php // If this the Posts page, display a message. if ( is_home() ): echo '<h2>Thanks for visiting our blog!</h2>'; endif; ?>

is_front_page()

相反, is_front_page()會查找設置為您網站主頁的任何頁面——無論它是否是靜態的。 誠然,當您學習創建自己的主題時,這並不是世界上最明顯的事情。 但是知道使用哪個標籤至關重要。

這個特定標籤的好處在於,即使您稍後要指定一個不同的頁面作為您的主頁,您仍然可以定位到正確的位置。 有更明確的方法來定位頁面,但是這種方法可以讓您在發生更改時保持覆蓋。

 <?php // If this is the home page, show a special message. if ( is_front_page() ) { ?> <h1>Welcome</h1> <?php // Otherwise, show the page title. } else { ?> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php } ?>

is_single() 和 is_page()

這些標籤中的每一個都執行雙重功能。 is_single()查看當前 URL 是否為帖子。 它可以是標準的博客文章、附件或屬於自定義文章類型。

同樣,如果當前 URL 是一個頁面, is_page()將返回 true。 默認情況下,這兩個標籤都針對屬於頁面或帖子的任何內容。 這是許多條件標籤中的一個共同點。

 <?php // Target all posts. if ( is_single() ): echo 'You are on a single post.'; endif; // Target all pages. if ( is_page() ): echo 'This is a page'; endif; ?>

但是您也可以通過添加 ID 或 slug 來利用這些標籤來定位特定的帖子或頁面。

 <?php // Target About Us if ( is_page( 'about-us' ) ): ?> <a href="#"></a> <?php endif; ?>

使用數組將允許您定位多條內容。

 <?php // Target About Us and Contact Us pages. if ( is_page( array('about-us', 'contact-us') ) ): ?> <a href="#"></a> <?php endif; ?>

is_tax() 和 has_term()

分類法在網站上的內容組織方式中起著重要作用。 最常見的兩個是類別和標籤——它們有自己的條件標籤。 但 WordPress 也使我們能夠創建自己的分類法。

例如,如果您的網站包含音樂評論,您可能有一個名為“流派”的分類。 從那裡,您可以列出該分類中的特定音樂流派,例如“搖滾”、“嘻哈”和“爵士”。

is_tax()以分類檔案頁面為目標。 繼續我們的音樂評論示例,當我們在每個特定流派的存檔頁面上時,此標籤將觸發(生效)。

 <?php // Display a message on our Genre archive pages. if (is_tax('genre','rock','hip-hop','jazz') ): echo '<h2>This is a genre archive. Enjoy!</h2>'; endif; ?>

has_term()用於根據當前帖子所屬的分類來定位當前帖子。 例如,如果我們想為網站上每種音樂類型的帖子添加特殊圖形,這將非常有用。

 <?php // Show an image for the Rock genre. if (has_term('rock','genre') ): ?> <?php endif; ?>

is_page_template()

熟悉主題的模板層次結構後,您可能希望創建自己的自定義頁面模板。 is_page_template()讓您定位當前正在使用的頁面模板(不管它是否是自定義的)。 您可以檢查是否正在使用任何頁面模板,或者查找特定的模板。

但是,在查找特定頁面模板時必須小心。 由於此標記檢查文件名是否存在,因此如果更改該模板的名稱,條件可能會停止工作。 您必須更新代碼以反映任何文件名更改。

 <?php // Add a search form to the Services page template. if (is_page_template('services.php') ): ?> <?php get_search_form(); ?> <?php endif; ?>

滿足所有條件

雖然這只是對如何使用條件邏輯的簡要介紹,但它希望能激起您學習更多知識的興趣。

一旦掌握了條件,您將能夠以其他方式幾乎不可能的方式自定義您的網站。

它們可以讓您對主題的外觀和佈局進行細粒度控制,同時仍然受益於使用 CMS 的所有優勢。