WordPress 自定義字段入門

已發表: 2021-01-19

WordPress 自定義字段是一個經常被忽視的非常棒的功能。 它們允許您將“元數據”添加到在所有頁面或帖子中重複的頁面或帖子區域。 如果您有一個想要在多個頁面上發布相同類型信息的網站,這可以為您節省大量時間。

例如,查看 WordPress 網站上的常規博客文章。 奇怪的是,在頁面的某處,您會看到作者姓名和顯示文章發表時間的日期。 這是元數據,將出現在您網站上的每個帖子上。

那麼,如何將自己的元數據添加到帖子或頁面中? 簡單……使用 WordPress 自定義字段!

當然,您可以通過頁面/帖子編輯器在每個帖子中手動添加此信息,但這既耗時又通常需要仔細格式化,以確保所有帖子看起來都相同。 如果您要發布大量內容,每次都必須這樣做會很煩​​人。

當涉及到出現在頁面或帖子上的核心內容時,WordPress 頁面和帖子編輯器提供了很多開箱即用的功能和靈活性。 但是,您是否知道 WordPress 還為用戶提供了一種添加位於主帖子或頁面內容“外部”的內容的方法? 在本文中,我們將快速了解如何使用 WordPress 自定義字段,這將幫助您更好地組織您的帖子,並以美觀的格式為您的讀者添加有用的信息。

讓我們開始吧!

什麼是自定義字段和元數據?

帖子、頁面、用戶、評論和自定義帖子類型等內容包括以鍵/值對形式存儲在數據庫中 postmeta 表下的元數據。

您通常在帖子或頁面標題下看到的信息,例如管理員姓名、日期或評論計數器,都包含在帖子的元數據中。

自定義字段是一個附加字段,您可以在其中為您的帖子添加額外信息,並且還構成帖子元數據的一部分。

自定義字段適用於頁面、帖子或自定義帖子類型,並且也包含鍵/值對。 鍵是元數據元素的“名稱”,值是與鍵關聯的數據,每個帖子可能不同。

在 WordPress 中,您可以使用內置的自定義字段功能添加自定義字段,或者您可以更進一步,使用自定義字段插件,這將進一步增強對自定義字段的可用控制。 我們將在本文中介紹這兩個選項。

使用 WordPress 自定義字段添加自定義字段

默認情況下,內置的 WordPress 自定義字段設置是隱藏的,這解釋了為什麼您可能不知道此功能的存在。 要使用它,我們首先需要啟用它。

如果您使用的是經典 WordPress 編輯器(即不是 Gutenberg),請打開一個新帖子並前往該帖子的頂部。 您會在右側看到一個顯示“屏幕選項”的框。 單擊此按鈕,將出現一個帶有復選框的下拉菜單。 在此您應該看到一個顯示“自定義字段”的內容。 勾選此項以啟用它們。

如果您使用的是 Gutenberg,請單擊帖子右上角的“三個點”圖標。 將出現一個菜單,在該菜單的底部應該顯示“選項”。 單擊此按鈕,將出現一個帶有復選框的新彈出菜單。 在此列表中,您應該會看到一個顯示“自定義字段”的列表。 勾選此框,然後關閉彈出菜單。

後續步驟 - 添加您的自定義字段

添加自定義字段實際上非常簡單。 如上所述啟用它們後,轉到帖子底部,您應該會看到一個名為(您猜對了)“自定義字段”的新部分。

您將在“自定義字段”部分看到兩個框,“名稱”和“值”。 Name 字段有一些預先填充的默認值,這些默認值與已添加到您的 WordPress 網站的現有字段相關。 在我們的例子中,我們想要添加我們自己的新字段。 為此,請單擊位於名稱字段下的“輸入新”文本。

使用 Pressidium 託管您的網站

60 天退款保證

查看我們的計劃

在此示例中,我們希望創建一個指向外部網站的鏈接,該網站用作我們撰寫的文章的來源。 我們將此字段稱為“來源”。 單擊“輸入新”文本,然後在“值”部分輸入“來源”,然後輸入您選擇的網站的網址。 這將如下所示:

下次您無需單擊“輸入新”文本並手動輸入“來源”。 它現在將出現在值的下拉列表中。

如果您可以訪問您的數據庫(例如:通過 phpMyAdmin),您可以打開 postmeta 表,通過您編輯的帖子 id 過濾表,您應該會看到新的自定義字段及其值。

現在我們已經確認自定義字段已為帖子正確存儲,讓我們看看如何在帖子的前端顯示它,我們的網站訪問者將能夠看到它!

顯示自定義字段值

要在我們的帖子上顯示我們的新自定義字段值,我們需要向我們的單個帖子模板文件添加一些代碼。 通常,這可以在位於主題主文件夾中的singular.php文件中找到。 在我們的例子中(二十二十主題)它位於/wp-content/themes/twentytwenty/template-parts/content.php文件中。

我們將利用 WordPress 提供的核心get_post_meta函數從數據庫中檢索帖子的元字段。 該函數的結構如下:

 get_post_meta( $post_id, $key, $single )

唯一需要的參數是$post_id$key參數是要檢索的元鍵, $single參數定義是否返回單個值,如果根本沒有定義$key則無用。

如果僅聲明了$post_id ,則結果將是一個包含與特定帖子相關的所有鍵的數組。 所以,如果你只是插入get_post_meta( $post_id )你會得到這樣的:

 Array ( [field1_key] => Array ( [0] => value1 ) [field2_key] => Array ( [0] => value2 ) [field3_key] => Array ( [0] => value3 ) )

如果你使用get_post_meta( $post_id, 'filed1_key' )你會得到類似Array ( [0] => value1 )的東西,如果你像我們之前那樣使用get_post_meta( $post_id, 'filed1_key', true )你只會得到value1 .

此外,在某些帖子中,您可能不想定義源字段,因此我們必須在代碼中包含檢查該字段是否存在於帖子中。

因此,考慮到所有這些,我們需要使用的代碼如下:

 $source = get_post_meta( get_the_ID(), 'source', true); if( !empty( $source ) ) { echo '<h3>Source: ' . $source . '<h3>'; } ?>

我們將在帖子內容之後插入代碼,這樣在帶有“entry-content”類的 HTML div 中,代碼將如下所示:

 <div class="entry-content"> <?php if ( is_search() || ! is_singular() && 'summary' === get_theme_mod( 'blog_content', 'full' ) ) { the_excerpt(); } else { the_content( __( 'Continue reading', 'twentytwenty' ) ); } $source = get_post_meta( get_the_ID(), 'source', true); if( !empty( $source ) ) { echo '<h3>Source: ' . $source . '<h3>'; } ?> </div><!-- .entry-content -->

現在讓我們通過打開一個新帖子並看看這些內容將如何出現在前端來看看我們已經完成了什麼。

自定義字段輸出

我們提醒您,如果您在定位與您的單個帖子視圖對應的模板文件時遇到困難,您可以參考 WordPress 模板層次結構圖。

顯然,要設置此輸出的樣式,還需要做一些工作。 這超出了本文的範圍,但我們將在以後的文章中介紹。

使用插件添加自定義字段

高級自定義字段插件

高級自定義字段插件是可用的最佳插件之一,可讓您快速將自定義字段添加到您的 WordPress 網站並提供對自定義字段數據的進一步控制。 使用它的構建器,您可以輕鬆創建自定義字段,然後可以將其添加到您的帖子、用戶、分類法、媒體、評論甚至自定義選項頁面。

使用 ACF 創建您的自定義字段

安裝並激活 ACF 插件後,轉到顯示已註冊字段的“自定義字段 > 字段組”。

按“添加新”按鈕開始創建您的字段。 這些也可以添加到組中。

為您提供了大量選項,可以增強您的自定義字段行為。 除了包含字段標籤和名稱的基本配置外,您還可以定義字段的類型,定義字段是否為必填項,更改默認值,佔位符文本,當然還可以選擇將包含的帖子類型使用邏輯論證。

此外,還有一些可用的設置允許您更改字段的外觀(非常有用)和一個複選框列表,供您定義應在相應編輯屏幕上隱藏的內容。

太棒了,對吧?

此外,在 ACF 工具菜單中,您可以導出或導入 JSON 格式的字段組,以加快處理速度(如果這些字段已在其他地方創建)。

使用高級自定義字段的工作示例

假設我們創建了一個名為“書籍”的自定義帖子類型,我們想在每個書籍帖子上添加一些自定義字段,例如流派、書籍作者和出版年份。 我們應該做的第一件事是創建字段組和包含字段,如下所示:

如您所見,並非所有字段都使用相同的類型。

  • 作者字段是一個簡單的文本字段,我們將填寫作者的全名。
  • Genre 字段是一個選擇字段,必須接受多個值。 一本書可以與更多的一種流派相關。
  • 需要將流派的預定義選項插入到“選項”框中,每個選項都在自己的行中。

封面字段應該是一個帶有預定義選項的單值選擇字段。

現在讓我們去編輯一個書帖。 這些字段將很好地分組在側欄中。

如果要更改字段組的位置,請進入相應的設置:

填寫文章的字段以及一些測試內容並更新帖子。 此時,如果您訪問 Book Post 的前視圖,您會注意到我們的自定義字段仍然沒有顯示任何內容。

顯示您的 ACF 自定義字段

通過使用 ACF 插件提供的友好功能,您可以輕鬆地在主題模板中顯示自定義字段。 其中兩個是:

  • get_field() – 返回特定字段的值。
  • the_field() – 顯示特定字段的值。

這些是 ACF 插件最常用的功能。 如果您想查看插件功能的完整列表,可以訪問官方文檔以了解更多信息。

因此,要在帖子視圖模板中輸出您的自定義字段,您需要添加一些代碼,就像我們在使用默認 WordPress 自定義字段時所做的一樣。 然而,這次我們將使用 ACF 插件的功能。 由於我們使用的是 Twenty Twenty 主題,因此我們必須編輯twentytwenty/template-parts/文件夾下的 content.php 文件。 在內部部分關閉之後,我們添加了以下幾行:

 <div class="entry-content"> <?php if( get_field( 'author' ) ) { echo '<p><b>Author:</b> ' . get_field( 'author' ) . '<p>'; } if( get_field( 'genre' ) ) { echo '<p><b>Genre:</b> ' . get_field( 'genre' ) . '<p>'; } if( get_field( 'cover' ) ) { echo '<p><b>Cover:</b> ' . get_field( 'cover' ) . '<p>'; } ?> </div>

在前視圖中,我們現在可以看到自定義字段。

但是流派字段未正確顯示。 那是因為它包含多個值,因此get_field函數返回一個數組。 為了解決這個問題,我們必須將數組轉換為其一系列值。 通過使用implode()函數,這在 PHP 中很容易。

 <div class="entry-content"> <?php if( get_field( 'author' ) ) { echo '<p><b>Author:</b> ' . get_field( 'author' ) . '<p>'; } if( get_field( 'genre' ) ) { echo '<p><b>Genre:</b> ' . implode( ", ", get_field( 'genre' ) ) . '<p>'; } if( get_field( 'cover' ) ) { echo '<p><b>Cover:</b> ' . get_field( 'cover' ) . '<p>'; } ?> </div>
查看由簡碼創建的自定義字段

如果您想在某些帖子中選擇性地顯示某些字段但不是全部,您可以使用一些 ACF 短代碼來做到這一點。 為此,請打開您的帖子,然後為每個字段添加一個簡碼 Gutenberg 塊,並輸入如下簡碼:

 [acf field="MY_CUSTOM_FIELD"/]

將 MY_CUSTOM_FIELD 替換為字段的名稱,這應該可以正常工作。

正如我們所看到的,使用 Advanced Custom Fields 插件為我們提供了極大的靈活性來創建自定義字段並將它們顯示在我們想要的位置。

結論

整個行業的開發人員都依賴 WordPress 中的自定義字段功能,以便為他們的網站提供更好的結構和可讀性。 這是另一個出色的 WordPress 功能,它再次幫助解釋了 WordPress 為何如此受歡迎。 希望本文為您提供了將您自己的自定義字段添加到您的網站所需的信息。 開發愉快!

也可以看看

WordPress 管理員列表:添加自定義過濾器
向 WordPress 菜單項添加自定義字段