人妻精品在线观看一区二区三区,蜜臀av精品一区二区三区网站,中文一区二区三区亚洲欧美,熟女人妇精品一区二区,人妻av在线观看视频,欧美日韩国产三级精品网站,黄色免费网站直接进入,超碰公开福利正在播放,国产毛片乡下农村妇女毛片

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

來源:php中文網 | 2023-02-23 20:52:36 |

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

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


(資料圖片僅供參考)

一、使用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><li>..</li>..</ul>形式的無序列表,當然我們可以把它看成菜單:

<ul id="menu"><?php// 獲取分類$terms = get_terms("category", "orderby=name&hide_empty=0" );// 獲取到的分類數量$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>

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

二、使用讀數據庫的方式獲取分類列表

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

<ul id="menu"><?php $cats = $wpdb->get_results("SELECT {$wpdb->prefix}terms.term_id, nameFROM {$wpdb->prefix}term_taxonomy, {$wpdb->prefix}termsWHERE {$wpdb->prefix}term_taxonomy.term_id = {$wpdb->prefix}terms.term_idAND 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>

三、如何獲取當前分類的id

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

在分類頁獲取當前分類的id:

if ( is_category() ) {$cat_id = get_query_var("cat");}

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

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

四、子導航的制作

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

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

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

<ul><?phpglobal $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>

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

五、頁面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 "<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>

-- 完 --

推薦學習:《WordPress教程》

以上就是WordPress制作主題導航菜單的方法(二)的詳細內容,更多請關注php中文網其它相關文章!

關鍵詞: WordPress