首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

WordPress 獲取文章資訊 get_post() 與分類連結 get_category_link() 完整用法指南

     編輯:PHP 綜合知識

前言

WordPress 開發中,取得單篇文章物件與產生分類頁連結是高頻需求。get_post() 提供靈活的輸出格式;get_category_link() 配合多種查詢方式(ID、slug、名稱)能精準取得分類 URL。本文完整整理參數、回傳值、實戰範例與常見陷阱。

get_post() — 取得文章物件

函數原型

get_post( $post = null, $output = OBJECT, $filter = 'raw' )

參數說明

參數型別預設說明
$postint|WP_Post|nullnull(當前迴圈文章)文章 ID 或 WP_Post 物件
$outputstringOBJECTOBJECT / ARRAY_A / ARRAY_N
$filterstring'raw'資料過濾模式,參考 sanitize_post_field()

回傳值

  • 成功:WP_Post 物件 / 關聯陣列 / 數值陣列
  • 失敗:null

基本範例

// 1. 依 ID 取得物件(最常用)
$post = get_post( 7 );
echo $post->post_title;
echo $post->post_content;
echo $post->post_date;

// 2. 取得關聯陣列(方便直接 foreach 或 json_encode)
$postArr = get_post( 7, ARRAY_A );
echo $postArr['post_title'];

// 3. 在主迴圈中取得當前文章(通常直接用 $post 或 get_the_ID())
// 但可用於子迴圈或 WP_Query 迴圈外部
global $post;
$current = get_post(); // 等同於 $post

WP_Post 物件常用屬性速查

屬性說明
ID文章 ID
post_author作者 ID
post_date / post_date_gmt發布時間(本地/UTC)
post_content內容(未套用 the_content filter)
post_title標題
post_excerpt摘要
post_status狀態:publish/draft/pending/private 等
comment_statusopen/closed
post_password密碼保護時的密碼
post_nameSlug(別名)
post_modified最後修改時間
post_parent父文章 ID(頁面層級、附件關聯)
post_typepost/page/attachment/自訂類型
menu_order排序順序

進階用法:取得自訂欄位

$post = get_post( 123 );
$meta = get_post_meta( $post->ID ); // 取得所有自訂欄位
$price = get_post_meta( $post->ID, 'price', true ); // 單一欄位

get_category_link() — 取得分類頁連結

函數原型

get_category_link( $category )
  • $category:分類 ID (int) 或分類物件 (WP_Term)
  • 回傳:分類頁完整 URL (string);找不到回傳空字串

各種查詢方式取得分類連結

1. 已知分類 ID

$url = get_category_link( 23 );

2. 已知分類別名

$term = get_category_by_slug( 'news' );
if ( $term ) {
    $url = get_category_link( $term );
}

3. 已知分類名稱

$catId = get_cat_ID( '最新消息' ); // 依名稱取得 ID
if ( $catId ) {
    $url = get_category_link( $catId );
}

4. 在迴圈中取得當前文章的第一個分類連結

$cats = get_the_category(); // 回傳 WP_Term 陣列
if ( $cats ) {
    $url = get_category_link( $cats[0] );
}

5. 取得所有分類連結(導航選單常用)

$categories = get_categories(['hide_empty' => false]);
foreach ( $categories as $cat ) {
    echo '' . esc_html( $cat->name ) . '';
}

延伸:取得標籤、自訂分類法連結

分類法取得連結函數備註
標籤get_tag_link( $tag_id )或 get_term_link( $term, 'post_tag' )
自訂分類法get_term_link( $term, 'taxonomy_slug' )通用函數,支援所有分類法

常見錯誤與最佳實務

錯誤正確做法
直接 echo get_category_link() 未轉義輸出前務必 esc_url()
在迴圈外用 get_post() 未傳 ID明確傳入 ID 或使用 WP_Query
混淆 post_name (slug) 與 post_title連結用 post_name,顯示用 post_title
大量查詢分類連結未快取使用 get_categories() 一次撈取,避免 N+1

原始碼位置

  • get_post():wp-includes/post.php
  • get_category_link():wp-includes/category-template.php

小結

get_post() 是取得文章資料的核心入口,靈活的輸出格式適應不同場景;get_category_link() 配合 get_category_by_slug()、get_cat_ID() 等輔助函數,能從任意已知資訊精準產生分類 URL。善用 get_term_link() 統一處理所有分類法,程式碼更簡潔一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved