更新日期:2022-05-26

除了 WordPress 內建的文章有分類功能外,如果使用自訂文章類型( Custom Post Type ),通常也會有順便加入分類功能,這兩種文章取得分類的方法是十分類似的。

內建文章取得分類的語法是 get_the_category 這個函數,參數 $post_id 非必須的,若沒有給會去偵測目前文章的 ID,我的習慣會盡量填入文章ID。

get_the_category( int $post_id = false )

而 CPT 的文章分類要用另一個函數 get_the_terms,用法如下:

get_the_terms( int|WP_Post $post, string $taxonomy )

其實翻一下 get_the_category() 的程式內容,看看發現什麼?

function get_the_category( $post_id = false ) {
    $categories = get_the_terms( $post_id, 'category' );
    if ( ! $categories || is_wp_error( $categories ) ) {
        $categories = array();
    }
    .........
}

你沒看錯,get_the_category 是直接套用 get_the_terms 函數的,只不過 get_the_category 的沒有分類參數,是因為直接代入 ‘category’ 不能改了。

同場加映取得文章標籤 get_the_tags()

也是利用 get_the_terms 函數

function get_the_tags( $post_id = 0 ) {
    $terms = get_the_terms( $post_id, 'post_tag' );
    return apply_filters( 'get_the_tags', $terms );
}