搜尋
首頁CMS教程&#&按WordPress製作主題導覽選單的方法(二)

前面跟大家介紹了《WordPress製作主題導覽選單的方法(一)》,本文繼續帶大家來介紹一下WordPress製作主題導覽選單的方法,希望對大家有幫助!

WordPress製作主題導覽選單的方法(二)

上一篇教學講如何使用WordPress內建的函數來建立導航選單,但是這些函數產生的HTML程式碼都是固定的,你很難去定義導航選單的HTML程式碼。本文將為你介紹幾種更自由的方法來建立導航選單,而這些方法不僅可以用於導航選單。當然本文只是提供你一個解決問題的思路,並不是像食譜那樣的教程,一看、一複製就能用在你的專案。

一、使用get_terms()來取得分類清單

使用get_terms()可以取得你的文章分類、連結分類和自訂分類等,給get_terms()傳遞對應的參數可以給你回傳一個物件數組,這個數組就是你想要的所有分類,以下是get_terms()的函數原型:

<?php get_terms( $taxonomies, $args ) ?>

$taxonomies:
     該參數是您想要取得的分類類別,可選值包括:"category","link_category","my_taxonomy",他們分別代表文章分類、連結分類、以及你自訂的分類,其中my_taxonomy是你自訂的分類名稱。

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

     下方是一個該函數的使用範例,這裡將顯示一個所有文章分類的

  • ..
  • ..
形式的無序列表,當然我們可以把它看成選單:
<ul id="menu">		
<?php
	// 获取分类
	$terms = get_terms(&#39;category&#39;, &#39;orderby=name&hide_empty=0&#39; );

	// 获取到的分类数量
	$count = count($terms);
	if($count > 0){
		// 循环输出所有分类信息
		foreach ($terms as $term) {
			echo &#39;<li><a href="&#39;.get_term_link($term, $term->slug).&#39;" title="&#39;.$term->name.&#39;">&#39;.$term->name.&#39;</a></li>&#39;;
		}
 	}
?>		
</ul>

     get_terms()函數傳回一個物件陣列$terms,我們先判斷這個陣列是否為空,為空說明並沒有取得任何分類,如果不為空那麼你就可以輸出分類了。 $terms的每個陣列項目就是一個對象,部分對象屬性的意義如:slug:分類縮略名,name:分類名,term_id:分類id。如以上程式碼所示,你可以透過$term->name來取得物件的屬性值。

二、使用讀取資料庫的方式取得分類清單

     如果你了解WordPress的資料庫,可以發現WordPress的分類資訊都儲存在wp_terms和wp_term_taxonomy這兩個表中,wp_terms儲存基本資訊(包括文章分類、文章標籤和連結分類等),wp_term_taxonomy用於儲存進一步描述(用於儲存描述、區分分類和標籤等)。我們可以使用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 = &#39;category&#39;");
							
	if($cats) {
		foreach($cats as $cat) {
			echo &#39;<li><a href="&#39;.get_category_link($cat->term_id).&#39;" title="&#39;.$cat->name.&#39;">&#39;.$cat->name.&#39;</a></li>&#39;;
		}
 	}
?>		
</ul>

#三、如何取得目前分類的id

#     有些時候我們需要製作一個子導航,如http://www.nashowgroup.com/?p=58&lang=zh左邊的人力資源導航,這個導航可以是任意項目,如當前分類下的子分類或目前分類下的文章等。那麼首要問題就是,如何取得目前分類的id,這樣才可以進行下一步的動作。

在分類頁取得目前分類的id:

if ( is_category() ) {
	$cat_id = get_query_var(&#39;cat&#39;);
}

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

$cats = get_the_category();
if($cats)
    $cat_id = $cats[0]->cat_ID;

四、子导航的制作

     上面我们讲解了如何获取当前分类的id,下面我们来讲讲如何制作子导航。首先,我们来制作一个当前分类下子分类的子导航,这里用到wp_list_categories()来列出子分类,当然你可以用我前面介绍的两种方法来获取分类。:

<ul>
<?php
// 这里我们用到上面获取到的$cat_id,获取该分类下的所有子分类
wp_list_categories(&#39;orderby=name&hide_empty=0&child_of=&#39; . $cat_id);
?> 
</ul>

     如果你的网站规模比较小,一个分类下的文章也不多,那么你可以在子导航中列出这个分类下的所有文章:

<ul>
	<?php
		global $wp_query;

		$query = array ( &#39;cat&#39; => $cat_id, &#39;orderby&#39; => title, &#39;order&#39;=> 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 &#39;class="chose"&#39;; ?> href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
	<?php endwhile; wp_reset_postdata(); endif; ?>
</ul>

     以上代码中用到了WP_Query来获取文章列表,该对象的使用方法,可以参考WordPress的官方文档:Class Reference/WP QueryFunction Reference/query posts。class="chose"用于高亮当前文章的菜单项,css规则你可以自己定义。

五、页面page的获取

     WordPress的页面page可以通过wp_list_pages()来列出,不过这个函数输出的HTML都是固定的,如果你想要自定义这些HTML,可以使用get_pages()来获取页面列表,代码示例如下:

<ul id="menu">
$mypages = get_pages();

if(count($mypages) > 0) {
    foreach($mypages as $page) {
        echo &#39;<li><a href="&#39;.get_page_link($page->ID).&#39;" title="&#39;.$page->post_title.&#39;">&#39;.$page->post_title.&#39;</a></li>&#39;;
    }
}
else {
    echo &#39;<li><a href="#">没有页面</a></li>&#39;;
}
</ul>

-- 完 --

推荐学习:《WordPress教程

以上是WordPress製作主題導覽選單的方法(二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:露兜即刻。如有侵權,請聯絡admin@php.cn刪除
WordPress是否需要編碼知識作為CMS?WordPress是否需要編碼知識作為CMS?Apr 30, 2025 am 12:03 AM

你不需要編程知識就能使用WordPress,但掌握編程可以提升體驗。 1)使用CSS和HTML可以調整主題樣式。 2)PHP知識能編輯主題文件,添加功能。 3)自定義插件和元標籤可優化SEO。 4)注意備份和使用子主題以防更新問題。

使用WordPress時的安全考慮是什麼?使用WordPress時的安全考慮是什麼?Apr 29, 2025 am 12:01 AM

TosecureaWordPresssite,followthesesteps:1)RegularlyupdateWordPresscore,themes,andpluginstopatchvulnerabilities.2)Usestrong,uniquepasswordsandenabletwo-factorauthentication.3)OptformanagedWordPresshostingorsecuresharedhostingwithawebapplicationfirewal

WordPress與其他網站構建者相比如何?WordPress與其他網站構建者相比如何?Apr 28, 2025 am 12:04 AM

WordPressExcelSoverotherWeberSiteBuilderSduetoItsflexible,可伸縮性,andopen-sourcenature.1)它'saversatilecmswithExtEnsextEnsexenSiveCustomizedOptionsVIATHEMESANDPLUGINS.2)它的alllearbutoffersbutoffersbutoffersbutoffersbutefersbuterbutfulcontrololoncemastered.3)

5個WordPress插件,供開發人員在2025年使用5個WordPress插件,供開發人員在2025年使用Apr 27, 2025 am 08:25 AM

2025年網站開發的七個必備WordPress插件 在2025年建立頂級WordPress網站需要速度,響應能力和可擴展性。 實現這種有效的實現通常取決於戰略插件的選擇。 這篇文章Highlig

您將使用WordPress做什麼?您將使用WordPress做什麼?Apr 27, 2025 am 12:14 AM

WordPresscanbeusedforvariouspurposesbeyondblogging.1)E-commerce:WithWooCommerce,itcanbecomeafullonlinestore.2)Membershipsites:PluginslikeMemberPressenableexclusivecontentareas.3)Portfoliosites:ThemeslikeAstraallowstunninglayouts.Ensuretomanageplugins

WordPress適合創建投資組合網站嗎?WordPress適合創建投資組合網站嗎?Apr 26, 2025 am 12:05 AM

是的,wordpressisisexcellentforcortingaportfoliowebsite.1)itoffersnumeroversnumeroverportfolio-spificthemeslike'astra'astra'astra'astra'astra'astra'astra'astra'astra'elementor'Enelementor'enableIntiviveSiveSign,Thoughtemanycanslowthesite.3)

使用WordPress而不是從頭開始編碼網站的優點是什麼?使用WordPress而不是從頭開始編碼網站的優點是什麼?Apr 25, 2025 am 12:16 AM

WordPressisadvantageousovercodingawebsitefromscratchdueto:1)easeofuseandfasterdevelopment,2)flexibilityandscalability,3)strongcommunitysupport,4)built-inSEOandmarketingtools,5)cost-effectiveness,and6)regularsecurityupdates.Thesefeaturesallowforquicke

是什麼使WordPress成為內容管理系統?是什麼使WordPress成為內容管理系統?Apr 24, 2025 pm 05:25 PM

WordPressIsAcmsDuetoItseAsofuse,自定義,USERMANAMECTION,SEO和COMMUNITYSUPPORT.1)ITSIMPLIFIESCONTENTMANGAMEWITHANINTUISIDERFEEFFECE.2)提供extentensiveCustomizationThroughThroughTheMesandPlugins.3)supportrobustuserrolesandplugins.4)supportrobustuserrolesandpermissions.4)增強

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具