站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        WordPress制作主題導(dǎo)航菜單的方法(二)

        前面給大家介紹了《WordPress制作主題導(dǎo)航菜單的方法(一)》,本文繼續(xù)帶大家來介紹一下WordPress制作主題導(dǎo)航菜單的方法,希望對大家有所幫助!

        WordPress制作主題導(dǎo)航菜單的方法(二)

        上一篇教程講了如何使用WordPress內(nèi)置的函數(shù)來創(chuàng)建導(dǎo)航菜單,但是這些函數(shù)生成的HTML代碼都是固定的,你很難去定義導(dǎo)航菜單的HTML代碼。本文將為你介紹幾種更為自由的方法來創(chuàng)建導(dǎo)航菜單,而這些方法不僅僅可以用于導(dǎo)航菜單。當(dāng)然本文只是給你提供一個解決問題的思路,并不是像菜譜那樣的教程,一看、一復(fù)制就能用在你的項(xiàng)目。

        一、使用get_terms()來獲取分類列表

        使用get_terms()可以獲取你的文章分類、鏈接分類和自定義分類等,給get_terms()傳遞相應(yīng)的參數(shù)可以給你返回一個對象數(shù)組,這個數(shù)組就是你想要的所有分類,以下是get_terms()的函數(shù)原型:

        <?php get_terms( $taxonomies, $args ) ?>
        登錄后復(fù)制

        $taxonomies:
        該參數(shù)是你想要獲取的分類類別,可選值包括:"category","link_category","my_taxonomy",他們分別代表文章分類、鏈接分類以及你自定義的分類,其中my_taxonomy是你自定義的分類名稱。

        $args:
        該參數(shù)是分類的篩選參數(shù),用于控制獲取你要獲取的分類,包括你想要獲取多少個分類、如何排序、父分類以及是否輸出空的分類等,具體請參考WordPress官方文檔:Function Reference/get terms,或者參考中文的簡要翻譯:常用函數(shù)-get_terms()

        下面是一個該函數(shù)的使用示例,這里將顯示一個所有文章分類的<ul><li>..</li>..</ul>形式的無序列表,當(dāng)然我們可以把它看成菜單:

        <ul id="menu">		 <?php 	// 獲取分類 	$terms = get_terms('category', 'orderby=name&hide_empty=0' );  	// 獲取到的分類數(shù)量 	$count = count($terms); 	if($count > 0){ 		// 循環(huán)輸出所有分類信息 		foreach ($terms as $term) { 			echo '<li><a href="'.get_term_link($term, $term->slug).'" title="'.$term->name.'">'.$term->name.'</a></li>'; 		}  	} ?>		 </ul>
        登錄后復(fù)制

        get_terms()函數(shù)返回一個對象數(shù)組$terms,我們首先判斷這個數(shù)組是否為空,為空說明并沒有獲取到任何分類,如果不為空那么你就可以輸出分類了。$terms的每個數(shù)組項(xiàng)就是一個對象,部分對象屬性的意義如:slug:分類縮略名,name:分類名,term_id:分類id。如以上代碼所示,你可以通過$term->name來獲取對象的屬性值。

        二、使用讀數(shù)據(jù)庫的方式獲取分類列表

        如果你了解WordPress的數(shù)據(jù)庫,可以發(fā)現(xiàn)WordPress的分類信息都存儲在wp_terms和wp_term_taxonomy這兩個表中,wp_terms存儲基本信息(包括文章分類、文章標(biāo)簽和鏈接分類等),wp_term_taxonomy用于存儲進(jìn)一步描述(用于存儲描述、區(qū)分分類和標(biāo)簽等)。我們可以使用SQL來從這兩個表中獲取我們想要的分類列表:

        <ul id="menu">		 <?php  	$cats = $wpdb->get_results("SELECT {$wpdb->prefix}terms.term_id, name 							FROM {$wpdb->prefix}term_taxonomy, {$wpdb->prefix}terms 							WHERE {$wpdb->prefix}term_taxonomy.term_id = {$wpdb->prefix}terms.term_id 							AND taxonomy = 'category'"); 							 	if($cats) { 		foreach($cats as $cat) { 			echo '<li><a href="'.get_category_link($cat->term_id).'" title="'.$cat->name.'">'.$cat->name.'</a></li>'; 		}  	} ?>		 </ul>
        登錄后復(fù)制

        三、如何獲取當(dāng)前分類的id

        有些時候我們需要制作一個子導(dǎo)航,如http://www.nashowgroup.com/?p=58&lang=zh左邊的人力資源導(dǎo)航,這個導(dǎo)航可以是任意項(xiàng)目,如當(dāng)前分類下的子分類或者當(dāng)前分類下的文章等。那么首要問題就是,如何獲取當(dāng)前分類的id,這樣才可以進(jìn)行下一步的動作。

        在分類頁獲取當(dāng)前分類的id:

        if ( is_category() ) { 	$cat_id = get_query_var('cat'); }
        登錄后復(fù)制

        在文章頁獲取該文章的第一個分類:

        $cats = get_the_category(); if($cats)     $cat_id = $cats[0]->cat_ID;
        登錄后復(fù)制

        四、子導(dǎo)航的制作

        上面我們講解了如何獲取當(dāng)前分類的id,下面我們來講講如何制作子導(dǎo)航。首先,我們來制作一個當(dāng)前分類下子分類的子導(dǎo)航,這里用到wp_list_categories()來列出子分類,當(dāng)然你可以用我前面介紹的兩種方法來獲取分類。:

        <ul> <?php // 這里我們用到上面獲取到的$cat_id,獲取該分類下的所有子分類 wp_list_categories('orderby=name&hide_empty=0&child_of=' . $cat_id); ?>  </ul>
        登錄后復(fù)制

        如果你的網(wǎng)站規(guī)模比較小,一個分類下的文章也不多,那么你可以在子導(dǎo)航中列出這個分類下的所有文章:

        <ul> 	<?php 		global $wp_query;  		$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>
        登錄后復(fù)制

        以上代碼中用到了WP_Query來獲取文章列表,該對象的使用方法,可以參考WordPress的官方文檔:Class Reference/WP Query和Function Reference/query posts。class="chose"用于高亮當(dāng)前文章的菜單項(xiàng),css規(guī)則你可以自己定義。

        五、頁面page的獲取

        WordPress的頁面page可以通過wp_list_pages()來列出,不過這個函數(shù)輸出的HTML都是固定的,如果你想要自定義這些HTML,可以使用get_pages()來獲取頁面列表,代碼示例如下:

        <ul id="menu"> $mypages = 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>
        登錄后復(fù)制

        — 完 —

        推薦學(xué)習(xí):《WordPress教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 中文字幕精品无码一区二区三区 | 久久99精品国产一区二区三区| 国产精品青草久久久久福利99 | 亚洲精品456播放| 四虎国产精品免费入口| 久久精品国产亚洲av水果派| 久久久久无码精品| 国产欧美日韩精品专区| 精品一区二区三区四区| 国产三级久久久精品麻豆三级 | 亚洲精品色婷婷在线影院| 国产在线精品国自产拍影院| 一区二区三区日韩精品| 九九热在线视频观看这里只有精品 | 国产精品伦理久久久久久| 久久91综合国产91久久精品| 国产高清在线精品一区| 99久久久精品免费观看国产| 久久66热人妻偷产精品9| 最新国产精品精品视频| 欧美精品区一级片免费播放| 精品久久久久久久久久久久久久久| 高清日韩精品一区二区三区| 87国产私拍福利精品视频| 精品国产一区二区三区免费 | 精品国产a∨无码一区二区三区| 中文成人无字幕乱码精品区| 人人妻人人澡人人爽精品欧美| 久久国产精品二国产精品| 精品国产爽爽AV| 久久久WWW免费人成精品| 污污网站国产精品白丝袜| 久久五月精品中文字幕| 青春草无码精品视频在线观| 欧美亚洲另类精品第一页| 久久精品国产99久久久香蕉 | 国产乱子伦精品无码专区| 国产精品自在线拍国产手机版| 国产精品自在线拍国产电影| 久久精品这里只有精99品| 四虎国产精品永久在线无码|