本章延續佈景主題實例,加入 WP_Query、分類頁、單篇文章頁、自訂頁面模板與分頁等功能。這些能力會讓主題從「可以顯示文章」進一步變成「可以依需求組織內容」。
本章學習目標
能使用 WP_Query 建立自訂文章列表,製作常見模板,並處理分頁、查無資料與重置查詢。
9.1 WP_Query 類別探討
WP_Query 是 WordPress 查詢文章的核心類別。主查詢由 WordPress 根據網址自動建立,自訂查詢則可用於首頁精選文章、課程列表或側欄推薦文章。
建立自訂查詢
$course_query = new WP_Query([
'post_type' => 'post',
'posts_per_page' => 6,
'category_name' => 'wordpress',
]);
if ($course_query->have_posts()) {
while ($course_query->have_posts()) {
$course_query->the_post();
the_title('<h2>', '</h2>');
}
wp_reset_postdata();
}
使用自訂查詢後一定要呼叫 wp_reset_postdata(),避免影響後續模板標籤。
常用查詢參數
post_type:文章類型。posts_per_page:每頁筆數。category_name或cat:分類條件。orderby與order:排序方式。meta_query:依自訂欄位查詢。
9.2 其他頁面模板的設計
WordPress 會依照 Template Hierarchy 自動選擇模板,例如分類頁優先找 category.php,單篇文章找 single.php,頁面找 page.php。
建立頁面模板
<?php
/*
Template Name: 課程首頁
*/
get_header();
?>
<main>自訂課程首頁內容</main>
<?php get_footer(); ?>
有了自訂頁面模板後,可在後台頁面編輯畫面選擇該模板。
9.3 其他進階主題
分頁與查無資料
完整主題不能只處理有資料的情況,也要處理查無文章與分頁。
the_posts_pagination([
'mid_size' => 2,
'prev_text' => '上一頁',
'next_text' => '下一頁',
]);
本章練習
- 用
WP_Query建立一個精選文章區塊。 - 建立
single.php與page.php。 - 為文章列表加入分頁與查無資料訊息。