在 WordPress 網站開發中,有時候我們希望在某個自定義文章類型(Custom Post Type,簡稱 CPT)頁面中,顯示與其相關的一般文章(Post)。例如,假設我們有一個名為 member_info
的 CPT,而我們希望在這些頁面中,顯示內文包含該 member_info
標題的相關文章,該如何實現呢?
本篇文章將示範如何使用 WP_Query
查詢與目前 member_info
文章相關的一般文章,並將結果顯示在頁面上。
1. 程式碼實現
我們可以透過 WP_Query
來搜尋標題與一般文章內容匹配的內容,然後將結果顯示出來。以下是完整的 PHP 程式碼,請將其加入 single-member_info.php
或對應的模板檔案中:
<?php
if (is_singular('member_info')) {
$current_title = get_the_title(); // 取得當前 member_info 文章的標題
// 查詢與當前 member_info 相關的 post 文章
$args = array(
'post_type' => 'post', // 只搜尋一般文章
'posts_per_page' => 5, // 限制顯示數量
's' => $current_title, // 內文搜尋關鍵字
);
$query = new WP_Query($args);
if ($query->have_posts()) {
echo '<h3>相關文章</h3>';
echo '<ul style="margin-left: 0; list-style: none;">';
while ($query->have_posts()) {
$query->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
echo '</ul>';
} else {
echo '<h3>相關文章</h3>';
echo '<p>沒有找到相關文章</p>';
}
wp_reset_postdata();
}
?>
2. 程式碼解析
(1) 檢查當前文章類型是否為 member_info
if (is_singular('member_info')) {
這行程式碼確保我們只在 member_info
這個自定義文章類型的單篇文章頁面執行程式。
(2) 取得當前 member_info
文章的標題
$current_title = get_the_title();
我們使用 get_the_title()
來取得當前 member_info
文章的標題,這將作為搜尋關鍵字。
(3) 設定 WP_Query
查詢參數
$args = array(
'post_type' => 'post', // 只搜尋一般文章
'posts_per_page' => 5, // 限制顯示數量
's' => $current_title, // 內文搜尋關鍵字
);
-
'post_type' => 'post'
限制查詢結果為 WordPress 的一般文章。 -
'posts_per_page' => 5
設定最多顯示 5 篇相關文章。 -
's' => $current_title
透過s
參數搜尋內文包含member_info
文章標題的內容。
(4) 迴圈輸出結果
if ($query->have_posts()) {
echo '<h3>相關文章</h3>';
echo '<ul style="margin-left: 0; list-style: none;">';
while ($query->have_posts()) {
$query->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
echo '</ul>';
} else {
echo '<h3>相關文章</h3>';
echo '<p>沒有找到相關文章</p>';
}
這段程式碼會檢查是否有符合條件的文章,然後透過 while
迴圈輸出結果。
(5) 重置查詢
wp_reset_postdata();
這行程式碼確保 WP_Query
查詢結束後,WordPress 會恢復到原始的 post
查詢,避免影響後續的內容顯示。
3. 小結
這篇文章教學了如何在 member_info
文章類型的單篇頁面中,動態搜尋並顯示內文包含 member_info
標題的相關一般文章。
這種方法適用於許多情境,例如:
-
在產品詳細頁面顯示與該產品名稱相關的部落格文章
-
在課程頁面顯示與課程名稱相關的學習資源