更新日期:2014-09-11
在 wordpress 點擊分類的連結時,通常是呼叫 category.php 這支程式,然後就會顯示該分類文章、或該分類底下的子分類所有文章(不管幾層一起顯示)。這樣子的邏輯挺亂的,所以我們希望是點擊父分類時,顯示的是它的子分類連結、點子分類才顯示相關文章。
注意:以下語法,是在分類頁面下,通常是 category.php。首先我們要先知道目前所在分類的id,我們可以用 $cat 這個全域的變數。
先取的目前分類下的子分類語法
$args = array( 'type' => 'post', 'child_of' => 0, 'parent' => $cat, 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => 0, 'taxonomy' => 'category', 'pad_counts' => false ); $categories = get_categories($args);
這裡 $categories 會得到子分類以 object 型態的內容如下:
$category->term_id $category->name $category->slug $category->term_group $category->term_taxonomy_id $category->taxonomy $category->description $category->parent $category->count $category->cat_ID $category->category_count $category->category_description $category->cat_name $category->category_nicename $category->category_parent
我們可以自行組合出子分類清單
foreach($categories as $category) { echo '<p>Category: <a href="'.get_category_link( $category->term_id ).'">'.$category->name.'</a> </p> '; echo '<p>Description:'.$category->description.'</p>'; }
若是想要列出目前分類下的文章清單
下面這一段可以加在原本文章迴圈『 while ( have_posts() ) : the_post(); 』的上方
wp_reset_query(); $post_args = array( 'category__in' => array($cat), 'showposts' => 999, ); query_posts($post_args);
這樣子就會改變原來的 query 內容,真正只顯示屬於該分類的文章了。