WordPress 自定義字段 101:提示、技巧和技巧

已發表: 2023-07-21


您是否希望充分利用 WordPress 網站上的自定義字段?

自定義字段是一個方便的 WordPress 功能,允許您向 WordPress 帖子和頁面添加額外的數據和信息。 許多流行的 WordPress 插件和主題都使用自定義字段來存儲重要數據。

在本文中,我們將通過一些提示、技巧和竅門向您展示如何使用 WordPress 自定義字段。

WordPress custom fields 101 tips tricks and hacks

由於這是一篇很長的文章,我們添加了目錄以便於導航。 只需使用下面的快速鏈接跳轉到您想要閱讀的部分:

什麼是 WordPress 自定義字段?

WordPress 自定義字段是用於向您正在編輯的帖子或頁面添加額外信息的元數據。

默認情況下,當您編寫新的帖子、頁面或任何其他內容類型時,WordPress 會將該內容保存在兩個不同的部分中。

第一部分是您使用 WordPress 內容編輯器添加的內容正文。

第二部分是有關該內容的信息。 例如,標題、作者、日期、時間等。 該信息稱為元數據。

WordPress 網站會自動將所有必需的元數據添加到您創建的每個帖子或頁面中。 您還可以使用自定義字段創建和存儲您自己的元數據。

默認情況下,自定義字段選項在帖子編輯屏幕上隱藏。 要查看它,您需要單擊屏幕右上角的三點菜單,然後從菜單中選擇“首選項”。

Open preferences in content editor

這將打開一個彈出窗口,您需要在其中切換到“面板”選項卡,然後啟用“自定義字段”選項。

之後,只需單擊“啟用並重新加載”按鈕即可重新加載帖子編輯器。

Enable custom fields option

帖子編輯器將重新加載,您將能夠在內容編輯器下方看到“自定義字段”面板。

自定義字段可用於添加與帖子、頁面或其他內容類型相關的任何信息。 然後可以在您的主題中顯示此元信息。

View custom fields in WordPress

但是,為此,您需要編輯 WordPress 主題文件。

注意:建議已經熟悉編輯主題文件的用戶使用本教程。 對於想要學習如何在自己的主題或插件中正確使用自定義字段的有抱負的 WordPress 開發人員來說,它也很有幫助。

說到這裡,我們來看看如何在WordPress中添加和使用自定義字段。

在 WordPress 中添加自定義字段

首先,您需要在塊編輯器中打開帖子或頁面,以便可以添加自定義字段。 然後,您必須轉到自定義字段元框。

Adding custom field name and value

接下來,您需要為自定義字段提供名稱,然後輸入其值。 單擊“添加自定義字段”按鈕進行保存。

該字段將存儲並顯示在自定義字段元框中,如下所示:

View newly created custom field

您可以隨時編輯此自定義字段,然後只需單擊“更新”按鈕即可保存更改。 如果您不想再使用它,也可以將其刪除。

現在,您需要保存帖子以存儲自定義字段設置。

在 WordPress 主題中顯示自定義字段

要在網站上顯示自定義字段,您需要編輯 WordPress 主題文件和代碼片段。

我們不建議直接編輯主題文件,因為最輕微的錯誤都可能會破壞您的網站。 更簡單的方法是使用 WPCode。

它是 WordPress 的最佳代碼片段插件,可讓您添加自定義代碼並管理 WordPress 儀表板中的片段。

如果您以前沒有這樣做過,那麼我們還建議您閱讀有關如何在 WordPress 中復制和粘貼代碼的指南。

首先,您需要安裝並激活免費的 WPCode 插件。 有關更多詳細信息,請參閱我們有關如何安裝 WordPress 插件的初學者指南。

激活後,您需要從 WordPress 儀表板轉到代碼片段 » + 添加片段,然後選擇“添加您的自定義代碼(新片段)”選項。

Adding a code snippet to your WordPress website

現在您需要復制此代碼以添加到您的主題文件中:

<?php echo get_post_meta($post->ID, 'key', true); ?>

不要忘記將key替換為自定義字段的名稱。

接下來,您必須在“代碼預覽”區域中輸入代碼,並將“代碼類型”更改為“PHP 片段”。

Enter custom fields code

例如,我們在演示主題中使用了以下代碼:

<p>Today's Mood: <?php echo get_post_meta($post->ID, 'Mood', true); ?></p>

從這裡,您可以向下滾動到插入部分。

在這裡,您可以選擇代碼的運行位置。 默認情況下,WPCode 將自動插入代碼並在您網站上的任何位置運行它。

Edit insertion method for code

但是,您可以更改此設置並選擇您希望自定義字段出現的位置。

例如,我們將選擇“特定於頁面”選項卡並選擇“在發布前插入”選項。 這樣,自定義字段將出現在博客文章的開頭。

Insert before post

您現在可以保存更改並訪問添加自定義字段的帖子以查看其實際效果。

您也可以在所有其他 WordPress 博客文章中使用此自定義字段。

Displaying custom field

您還可以輕鬆調整不同博客文章的自定義字段。 只需創建一篇新帖子或編輯現有帖子即可。

然後,轉到自定義字段元框,從下拉菜單中選擇自定義字段並輸入其值。

Reuse custom field

完成後,只需單擊“添加自定義字段”按鈕即可保存更改,然後發布或更新您的帖子。

疑難解答:在帖子編輯屏幕的下拉列表中找不到自定義字段

默認情況下,WordPress 僅在帖子編輯屏幕的下拉菜單中加載 30 個自定義字段。

如果您使用的 WordPress 主題和插件已經使用了自定義字段,那麼它們可能會首先出現在下拉菜單中,並且您將無法看到新創建的自定義字段。

要解決此問題,您需要將以下代碼添加到主題的functions.php文件中或使用WPCode(推薦):

add_filter( 'postmeta_form_limit', 'meta_limit_increase' );
function meta_limit_increase( $limit ) 
    return 50;

上面的代碼會將該限制更改為 50。如果您仍然看不到自定義字段,那麼您可以嘗試進一步增加該限制。

使用高級自定義字段為自定義字段創建用戶界面

如您所見,添加自定義字段後,您每次撰寫帖子時都必須選擇該字段並輸入其值。

如果您有許多 WordPress 自定義字段或多個作者在您的網站上寫作,那麼這不是一個理想的解決方案。

如果您可以創建一個用戶界面,用戶可以在其中填寫表單以向自定義字段添加值,那不是很好嗎?

事實上,許多流行的 WordPress 插件已經這樣做了。

例如,流行的 All in One SEO 插件中的 SEO 標題和元描述框是一個自定義元框:

AIOSEO SEO title and description

創建用於添加自定義字段的用戶界面的最簡單方法是使用高級自定義字段插件。

您需要做的第一件事是安裝並激活高級自定義字段插件。 有關更多詳細信息,請參閱我們有關如何安裝 WordPress 插件的分步指南。

激活後,您需要訪問ACF » 字段組頁面並單擊“添加新項”按鈕。

Add new field group

字段組就像一個包含一組自定義字段的容器。 它允許您添加多個自定義字段面板。

現在,您需要為字段組提供標題,然後單擊右上角的“+ 添加字段”按鈕。

Add new field

您現在可以選擇字段類型。

高級自定義字段允許您創建各種字段,包括文本、圖像上傳、數字、下拉列表、複選框等。

Select field type and other details

接下來,您可以向下滾動以查看該特定字段的其他選項,例如字段名稱、字段標籤和默認值。 您可以根據自己的要求更改它們。

如果需要,您還可以將多個字段添加到字段組中。 完成後,只需單擊“保存更改”按鈕即可。

View new field group

接下來,編輯一篇文章或創建一篇新文章,您將在內容編輯器下方看到一個包含 WordPress 自定義字段的新面板。

有關詳細的分步說明,您可以參閱我們有關如何在 WordPress 帖子和帖子類型中添加自定義元框的指南。

如何使用條件語句隱藏空自定義字段

到目前為止,我們已經介紹瞭如何創建自定義字段並將其顯示在主題中。

現在讓我們看看如何在顯示自定義字段之前檢查它是否不為空。 為此,我們將修改代碼以首先檢查該字段中是否有數據:

<?php 

$mood = get_post_meta($post->ID, 'Mood', true);

if ($mood)  ?>

<p>Today's Mood: <? echo $mood; ?></p>

<?php 

 else 
// do nothing;


?>

不要忘記將Mood替換為您自己的自定義字段名稱。

向自定義字段添加多個值

自定義字段可以在同一篇文章中重複使用以添加多個值。 您只需再次選擇該字段並將另一個值添加到“值”框中。

Adding multiple values to a custom field

但是,我們在上面的示例中使用的代碼只能顯示單個值。

要顯示自定義字段的所有值,我們需要修改代碼並使其以數組形式返回數據。 您需要將以下代碼添加到主題文件中:

<?php 
$mood = get_post_meta($post->ID, 'Mood', false);
if( count( $mood ) != 0 )  ?>
<p>Today's Mood:</p>
<ul>
<?php foreach($mood as $mood) 
            echo '<li>'.$mood.'</li>';
            
            ?>
</ul>
<?php 
 else  
// do nothing; 

?>

再次強調,不要忘記將Mood替換為您自己的自定義字段名稱。

在此示例中,您會注意到我們已將get_post_meta函數的最後一個參數更改為false 。 此參數定義函數是否應返回單個值。 將其設置為false允許它將數據作為數組返回,然後我們將其顯示在foreach循環中。

如何在 WordPress 中按自定義字段搜索帖子

WordPress 的默認搜索不適用於您網站上的任何自定義字段。 它僅使用內容來查找您或您的訪問者在您的網站上尋找的帖子。

然而,SearchWP 通過改進您的 WordPress 搜索來改變這一點。 它是最好的 WordPress 搜索插件,不僅可以使用帖子內容,還可以對所有內容進行索引,包括 WordPress 自定義字段、PDF 文檔、自定義表格、文本、文件等。

您可以使用 SearchWP 調整搜索算法,而無需編輯代碼。 只需安裝插件,然後從 WordPress 管理區域前往SearchWP » Algorithm

之後,您需要轉到“引擎”選項卡,然後調整“屬性相關性”滑塊。 這將改變搜索期間賦予每個屬性的重要性。

Adjust the search relevance

例如,您可以將“自定義字段”滑塊設置為最大,並相應地調整其他屬性的滑塊。 這樣,在 WordPress 中搜索內容時,SearchWP 將優先考慮自定義字段中的數據。

使用 SearchWP 的另一個優點是可以與一些最流行的自定義字段插件配合使用,包括高級自定義字段 (ACF)、Meta Box 和 Pod。

有關更多詳細信息,您可以閱讀我們的初學者友好指南,了解如何使用 SearchWP 改進 WordPress 搜索。

顯示具有特定自定義鍵的帖子

WordPress 允許您顯示帶有自定義鍵及其值的帖子。 例如,如果您嘗試創建自定義存檔頁面來顯示具有特定自定義鍵的所有帖子,則可以使用WP_Query類來查詢與這些字段匹配的帖子。

您可以使用以下代碼作為起點:

$args = array(
    'meta_key'   => 'Mood',
    'meta_value' => 'Happy'
);
$the_query = new WP_Query( $args );
 
<?php 
// the query
$the_query = new WP_Query( $args ); ?>
 
<?php if ( $the_query->have_posts() ) : ?>
 
    <!-- the loop -->
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <h2><?php the_title(); ?></h2>
        <?php the_content(); ?>
 
    <?php endwhile; ?>
    <!-- end of the loop -->
 
    <!-- pagination here -->
 
    <?php wp_reset_postdata(); ?>
 
<?php else : ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

不要忘記用您自己的值替換meta_keymeta_value參數。

如何使用自定義字段添加客座作者姓名

您想要添加訪客帖子,但不想僅為該帖子添加新的用戶個人資料嗎? 一種更簡單的方法是將客座作者姓名添加為自定義字段。

為此,您需要將以下代碼添加到主題的functions.php 文件中或使用WPCode(推薦):

add_filter( 'the_author', 'guest_author_name' );
add_filter( 'get_the_author_display_name', 'guest_author_name' );
function guest_author_name( $name ) 
global $post;
$author = get_post_meta( $post->ID, 'guest-author', true );
if ( $author )
$name = $author;
return $name;

有關更多詳細信息,請參閱有關將網絡片段粘貼到 WordPress 中的指南。

此代碼將函數掛鉤到 WordPress 中的the_authorget_the_author_display_name過濾器。

該函數首先檢查客座作者的姓名。 如果存在,則會用客座作者的姓名替換作者的姓名。

現在您需要編輯要在其中顯示客座作者姓名的帖子。 轉到“自定義字段”元框,添加您的客座作者姓名,最後單擊“添加自定義字段”按鈕。

Guest author custom field

有關更多詳細信息,請參閱有關如何在 WordPress 中使用自定義字段重寫來賓作者姓名的文章。

如何使用自定義字段顯示文章的貢獻者

在許多流行的博客和新聞網站上,許多作者都參與撰寫一篇文章。 但是,WordPress 只允許單個作者與帖子關聯。

解決此問題的一種方法是使用 Co-Authors Plus 插件。 要了解更多信息,請參閱有關如何向 WordPress 帖子添加多個作者的指南。

另一種方法是將貢獻者添加為自定義字段。

首先,您需要編輯要在其中顯示共同作者或貢獻者的帖子。 然後,向下滾動到“自定義字段”元框,並將作者姓名添加為共同作者自定義字段。

Add coauthor custom fields

現在,您需要將此代碼添加到要顯示共同作者的主題文件中:

<?php 
 
$coauthors = get_post_meta($post->ID, 'co-author', false);
if( count( $coauthors ) != 0 )  ?>
<ul class="coauthors">
<li>Contributors</li>
<?php foreach($coauthors as $coauthors)  ?>
           <?php echo '<li>'.$coauthors.'</li>' ;
            
            ?>
</ul>
<?php 
 else  
// do nothing; 

?>

要顯示以逗號分隔的作者姓名,您可以添加以下自定義 CSS:

.coauthors ul  
display:inline;

.coauthors li  
display:inline;
list-style:none;

.coauthors li:after  
content:","

.coauthors li:last-child:after 
    content: "";

.coauthors li:first-child:after 
    content: ":";

這就是我們的演示網站上的樣子。

Coauthors custom fields preview

如何在 WordPress 中的循環外顯示自定義字段

如果您需要在單個帖子的側邊欄中顯示自定義字段怎麼辦?

要在 WordPress 循環之外顯示自定義字段,您可以將以下代碼添加到主題文件中:

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'key', true);
wp_reset_query();
?>

不要忘記將key替換為您的自定義字段名稱。

通常,大多數 WordPress 主題在所有頁面上都使用相同的頁眉、頁腳和側邊欄。

還有多種方法可以為網站上的不同頁面顯示不同的側邊欄、頁眉或頁腳。 您可以參閱我們的指南,了解如何為每個 WordPress 帖子或頁面顯示不同的側邊欄。

一種方法是使用自定義字段。 只需編輯您想要顯示不同側邊欄的帖子或頁面,然後將側邊欄添加為自定義字段即可。

Add sidebar custom field

現在您需要編輯 WordPress 主題文件,例如 single.php,您要在其中顯示自定義側邊欄。 您將尋找以下代碼:

將此行替換為以下代碼:

<?php
global $wp_query;
$postid = $wp_query->post->ID;
$sidebar = get_post_meta($postid, "sidebar", true);
get_sidebar($sidebar);
wp_reset_query();
?>

此代碼只是查找側邊欄自定義字段,然後將其顯示在您的主題中。 例如,如果您添加webpage作為側邊欄自定義字段,則代碼將查找要顯示的 sidebar-webpage.php 文件。

您需要在主題文件夾中創建 sidebar-webpage.php 文件。 您可以從主題的 sidebar.php 文件複製代碼作為起點。

使用自定義字段操作 RSS 提要內容

想要向 RSS 提要用戶顯示其他元數據或內容? 使用自定義字段,您可以操作 WordPress RSS 源並將自定義內容添加到您的源中。

首先,您需要將以下代碼添加到主題的functions.php文件中或使用WPCode(推薦):

function wpbeginner_postrss($content) 
global $wp_query;
$postid = $wp_query->post->ID;
$coolcustom = get_post_meta($postid, 'coolcustom', true);
if(is_feed()) 
if($coolcustom !== '') 
$content = $content."<br /><br /><div>".$coolcustom."</div>
";

else 
$content = $content;


return $content;

add_filter('the_excerpt_rss', 'wpbeginner_postrss');
add_filter('the_content', 'wpbeginner_postrss');

現在,只需創建一個名為“coolcustom”的自定義字段並添加您喜歡的任何值。 您可以使用它來顯示廣告、圖像、文本或任何您想要的內容。

有關更多詳細信息,請參閱我們的指南,了解如何將網絡上的代碼複製並粘貼到 WordPress 中。

如何使用自定義字段操作 RSS 提要標題

有時您可能想為 RSS 源用戶添加額外的文本到帖子標題。 例如,如果您要發布贊助帖子或來賓帖子,這會很方便。

首先,您需要將以下代碼添加到主題的functions.php文件中,或者使用WPCode添加自定義代碼片段,而不會破壞您的網站:

function wpbeginner_titlerss($content) 
global $wp_query;
$postid = $wp_query->post->ID;
$gpost = get_post_meta($postid, 'guest_post', true);
$spost = get_post_meta($postid, 'sponsored_post', true);

if($gpost !== '') 
$content="Guest Post: ".$content;

elseif ($spost !== '')
$content="Sponsored Post: ".$content;

else 
$content = $content;

return $content;

add_filter('the_title_rss', 'wpbeginner_titlerss');

接下來,您需要編輯要在標題字段中顯示額外文本的帖子。

然後,添加 guest_post 和 spoken_post 作為自定義字段。

Add guest post custom field

如果發現這兩個自定義字段中的任何一個的值為“true”,則代碼將在標題之前添加適當的文本。 這種技術可以以多種方式使用,以滿足您的喜好。

想要了解更多炫酷的 RSS 提要技巧嗎? 請參閱我們的指南,了解如何添加內容和操作 WordPress RSS 源。

如何使用自定義字段在 WordPress 中設置帖子的到期日期

想要為 WordPress 網站上的某些帖子設置過期日期嗎? 當您只想發布特定時期的內容(例如運行調查或限時優惠)時,這會派上用場。

一種方法是手動刪除帖子內容或使用 Post Expirator 等插件。

另一種選擇是使用自定義字段在特定時間後自動使帖子過期。 您需要編輯主題文件並修改 WordPress 循環,如下所示:

<?php
if (have_posts()) :
while (have_posts()) : the_post();
$expirationtime = get_post_meta($post->ID, "expiration", false);
if( count( $expirationtime ) != '' ) 
if (is_array($expirationtime)) 
$expirestring = implode($expirationtime);


$secondsbetween = strtotime($expirestring)-time();
if ( $secondsbetween >= 0 ) 
echo 'This post will expire on ' .$expirestring.'';
the_content();
 else 
echo "Sorry this post expired!"

 else 
the_content();

endwhile;
endif;
?>

注意:您需要編輯此代碼以匹配您的主題。

添加此代碼後,您可以將過期自定義字段添加到您想要過期的帖子中。 確保以mm/dd/yyyy 00:00:00格式添加時間。

Adding an expiration date using custom field

如何使用自定義字段設置單個帖子的樣式

想要使用 CSS 更改單個帖子的外觀嗎? WordPress 會自動為每個帖子分配自己的類,您可以使用該類添加自定義 CSS。

但是,通過使用自定義字段,您可以添加自己的自定義類,然後使用它們以不同的方式設置帖子樣式。

首先,您需要編輯您想要不同樣式的帖子。 轉到“自定義字段”框並添加課後自定義字段。

Post class custom field

接下來,您需要編輯 WordPress 主題文件並在 WordPress 循環的開頭添加以下代碼:

<?php $custom_values = get_post_meta($post->ID, 'post-class'); ?>

現在您需要找到包含post_class()函數的行。

這是它在我們的演示主題中的樣子:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

您必須更改此行以包含您的自定義字段值,如下所示:

<article id="post-<?php the_ID(); ?>" <?php post_class($custom_values); ?>>

現在,如果您使用 Inspect 工具檢查帖子的源代碼,那麼您將看到自定義字段 CSS 類已添加到帖子類中。

Post class preview

現在,您可以使用此 CSS 類添加自定義 CSS 並以不同的方式設計您的帖子。

我們希望本文能幫助您了解有關 WordPress 自定義字段的更多信息。 您可能還想查看我們的指南,了解如何將自定義元字段添加到 WordPress 中的自定義分類法,以及最佳的 WordPress 頁面構建器插件,以幫助您按照自己想要的方式設計網站。

如果您喜歡這篇文章,請訂閱我們的 WordPress 視頻教程 YouTube 頻道。 您還可以在 Twitter 和 Facebook 上找到我們。