在做網站時,需要對網站的文章進行分類,由於某些分類需要更細的分類,我們會給一些分類添加二級分類,三級分類。
默認情況下,一級分類是自動的調用顯示子分類的文章的,也就是説只要子分類中添加了文章,那麼父分類也會把這些文章顯示出來。
如何讓一級分類 (父分類) 不調用二級分類 (子分類) 的文章,只顯示它自己類別下的文章呢?一般在我們製作網站分類頁面時都會使用下面的循環代碼:
[php]<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php endwhile;?>
<?php endif; ?>[/php]
這段循環代碼可以把我們網站中分類下面的文章全部調用出來,但如果要實現一級分類 (父分類) 不調用二級分類 (子分類) 的文章就需要對這段代碼進行一個判斷,需要將上面的代碼替換成下面的代碼:
[php]<?php
//如果沒有 category 模版,而是使用 archive 模版,需要加上判斷
if (is_category()) {
//得到分類標題但不 echo
$cat_title = single_cat_title("", false);
//把標題轉成 ID
$cat_ID = get_cat_ID($cat_title);
//獲取子分類 ID
$subcategories = get_categories(array('type' => 'post', 'child_of' => $cat_ID));
//循環拼成字符串,子分類前面加上"-" 負號
foreach ($subcategories as $i => $value) {
$excluded_cats .= ",-".$value->cat_ID;
}
//排除子分類 ID
if (!empty($excluded_cats)) {
$MainLoopArgs = array('cat' => $cat_ID . $excluded_cats);
}
else {
$MainLoopArgs = array('cat' => $cat_ID);
}
query_posts( $MainLoopArgs );
}
?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<?php endwhile;?>
<?php endif; ?>[/php]
通過以上的判斷語句,就可以實現一級分類就顯示自己類別下的文章,而不去調用子分類下的文章了。這個代碼可以幫助我們建網站時實現很多效果。
