如何僅顯示擁有特定自訂欄位的 WordPress 文章

WPressize Me

01/19/2023

為什麼顯示擁有特定自訂欄位的 WordPress 文章?

當你在 WordPress 網站上創建文章時,你可以使用自訂欄位在文章中添加額外的元數據。元數據是關於文章的資訊,如標題、作者和發布日期等。

自訂欄位是 WordPress 的進階概念,有多種方法可以在 WordPress 中添加自訂欄位,包括使用 Advanced Custom Fields (ACF) 插件。我們的 WordPress 自訂欄位 101 文章提供了許多如何使用和顯示自訂欄位的有用提示。

其中一名用戶問我們如何僅顯示具有特定自訂欄位的 WordPress 文章。如果你想創建一個自訂頁面,列出擁有特定自訂欄位和/或值的所有文章,這個方法會非常有用。回答完這個問題後,我們決定將答案分享給更多的 WordPress.org 社區成員。

編輯你的 WordPress 主題文件:需要注意的事項

要正確地跟隨這篇教程,有些事項需要注意:

這篇教程涉及到編輯 WordPress 主題文件的代碼,所以並不適合完全的初學者。如果你是新手,請閱讀我們的指南,了解如何在 WordPress 中複製和貼上代碼。

我們建議在操作前備份你的網站和/或使用測試環境,這樣在出錯時不會影響到線上網站。這是因為你將要向主題文件添加代碼,這存在風險。

我們建議了解 WordPress 模板階層的工作原理,這樣你才知道應該將代碼添加到哪裡。你還需要了解 WordPress 循環的工作原理,因為我們會在 WordPress 查詢中調用這些參數。

另外,請注意這篇教程僅適用於經典的 WordPress 主題,因為塊主題有一套不同的主題文件。

顯示擁有特定自訂欄位的 WordPress 文章

在展示代碼之前,首先你需要知道應該將它添加到那個主題文件中。大多數情況下,這將是頁面模板,例如 index.php、archive.php 或 page.php。

假設你想將其添加到二零二一年主題的 index.php 文件中。以下是該文件中 WordPress 迴圈部分現在的樣子:

<?php
if ( have_posts() ) {

// 加載文章迴圈。
    while ( have_posts() ) {
        the_post();

        get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
    }

    // 上一頁/下一頁導航。
    twenty_twenty_one_the_posts_navigation();

} else {

    // 如果沒有內容,包含“沒有找到文章”模板。
    get_template_part( 'template-parts/content/content-none' );
}

get_footer();

這段代碼使用了默認的 WordPress 迴圈 (have_posts() 和 the_post()) 來顯示文章。此方法適用於大多數標準的 WordPress 主題,通常用於顯示沒有任何自訂篩選或排序的文章。

接下來,假設我們使用自訂欄位 “color”,你需要將整段代碼替換為以下代碼片段:

<?php
// 用於顯示特定自訂欄位的查詢
$the_query = new WP_Query('meta_key=color');

// 加載文章迴圈。
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();

        get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
    }

    // 上一頁/下一頁導航。
    twenty_twenty_one_the_posts_navigation();

} else {

    // 如果沒有內容,包含“沒有找到文章”模板。
    get_template_part( 'template-parts/content/content-none' );
}

// 重置文章數據
wp_reset_postdata();

get_footer();

在這段新代碼中,我們引入了一個自訂查詢 ($the_query = new WP_Query(‘meta_key=color’);) 來根據特定自訂欄位的值 (在本例中為擁有自訂欄位 ‘color’ 的文章) 獲取文章。

然後,它使用自訂迴圈 (if ($the_query->have_posts())) 來迭代由這個查詢獲取的文章,依照前一段代碼的方式顯示每篇文章的內容。

我們還添加了 wp_reset_postdata() 函數,以確保在完成自訂查詢後,WordPress 能夠正確顯示所有文章。這確保了網站的運行平穩,並且向用戶顯示正確的內容。

現在,如果你想顯示具有某個特定值的自訂欄位文章,只需更改第 3 行的查詢如下:

$the_query = new WP_Query('meta_value=blue');

這將顯示所有自訂欄位中擁有 ‘blue’ 值的文章。

如果你想確保 ‘color’ 欄位具有 ‘blue’ 值,那麼查詢代碼將如下所示:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

你可以在 WordPress WP_Query 代碼參考頁面學習更多可以在查詢中使用的參數。

一旦你將代碼保存到頁面模板 PHP 文件中,可以在前端檢查你的 WordPress 網站來查看代碼的效果。

我們希望這篇教程能幫助你學習如何僅顯示擁有特定自訂欄位的 WordPress 文章。你可能還想看看我們完整的 WordPress SEO 指南,或查看我們推薦的提升網站的最佳 WordPress 插件列表。

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



Related Posts

  • 2024-07-20
  • WordPress 主题

您是否想在 WordPress 中為不同頁面使用多個佈景主題?可以自訂網頁的外觀和布局,為文章、頁面和部分區域建立模板。但是如果您想為網站的某些部分或頁面使用完全不同的佈景主題呢?本文將指導您如何在 WordPress 中為頁面使用多個佈景主題。

閱讀更多
  • 2024-07-19
  • WordPress 主题

您是否想在 WordPress 網站上添加回頂效果?這種效果在頁面較長時非常有用,可以讓用戶輕鬆返回頁面頂部,提升網站的用戶體驗。本文將教您如何使用 jQuery 和插件在 WordPress 中添加平滑回頂效果。

閱讀更多
  • 2024-07-13
  • WordPress 主题

您是否想在 WordPress 中創建一個自定義頁面?自定義頁面允許您使用與網站其餘部分不同的佈局。許多 WordPress 網站使用自定義頁面佈局來建立銷售頁面、登陸頁面、網路研討會頁面等。在這篇文章中,我們將向您展示如何輕鬆地在 WordPress 中創建自定義頁面。

閱讀更多

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>