一、使用get_terms()來獲取分類列表
使用get_terms()可以獲取你的文章分類、鏈接分類和自定義分類等,給get_terms()傳遞相應的參數可以給你返回一個對象數組,這個數組就是你想要的所有分類,以下是get_terms()的函數原型:
$args:
該參數是分類的篩選參數,用于控制獲取你要獲取的分類,包括你想要獲取多少個分類、如何排序、父分類以及是否輸出空的分類等,具體請參考WordPress官方文檔:Function Reference/get terms,或者參考中文的簡要翻譯:常用函數-get_terms()
下面是一個該函數的使用示例,這里將顯示一個所有文章分類的<ul><li>..</li>..</ul>形式的無序列表,當然我們可以把它看成菜單:
// 獲取到的分類數量
$count = count($terms);
if($count > 0){
// 循環輸出所有分類信息
foreach ($terms as $term) {
echo '<li><a href="'.get_term_link($term, $term->slug).'" title="'.$term->name.'">'.$term->name.'</a></li>';
}
}
?>
</ul>
二、使用讀數據庫的方式獲取分類列表
如果你了解WordPress的數據庫,可以發現WordPress的分類信息都存儲在wp_terms和wp_term_taxonomy這兩個表中,wp_terms存儲基本信息(包括文章分類、文章標簽和鏈接分類等),wp_term_taxonomy用于存儲進一步描述(用于存儲描述、區分分類和標簽等)。我們可以使用SQL來從這兩個表中獲取我們想要的分類列表:
if($cats) {
foreach($cats as $cat) {
echo '<li><a href="'.get_category_link($cat->term_id).'" title="'.$cat->name.'">'.$cat->name.'</a></li>';
}
}
?>
</ul>
三、如何獲取當前分類的id
有些時候我們需要制作一個子導航,如http://www.nashowgroup.com/?p=58&lang=zh左邊的人力資源導航,這個導航可以是任意項目,如當前分類下的子分類或者當前分類下的文章等。那么首要問題就是,如何獲取當前分類的id,這樣才可以進行下一步的動作。
在分類頁獲取當前分類的id:
四、子導航的制作
上面我們講解了如何獲取當前分類的id,下面我們來講講如何制作子導航。首先,我們來制作一個當前分類下子分類的子導航,這里用到wp_list_categories()來列出子分類,當然你可以用我前面介紹的兩種方法來獲取分類:
$query = array ( 'cat' => $cat_id, 'orderby' => title, 'order'=> ASC );
$queryObject = new WP_Query($query);
if ($queryObject->have_posts()) :
while ($queryObject->have_posts()) :
$queryObject->the_post();
?>
<li><a <?php if($post->ID == $wp_query->post->ID) echo 'class="chose"'; ?> href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; wp_reset_postdata(); endif; ?>
</ul>
五、頁面page的獲取
WordPress的頁面page可以通過wp_list_pages()來列出,不過這個函數輸出的HTML都是固定的,如果你想要自定義這些HTML,可以使用get_pages()來獲取頁面列表,代碼示例如下:
if(count($mypages) > 0) {
foreach($mypages as $page) {
echo '<li><a href="'.get_page_link($page->ID).'" title="'.$page->post_title.'">'.$page->post_title.'</a></li>';
}
}
else {
echo '<li><a href="#">沒有頁面</a></li>';
}
</ul>
上一篇 PHP獲取數組中某元素的位置實例
下一篇 如何讓百度快速收錄新站