前面跟大家介紹了《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('category', 'orderby=name&hide_empty=0' ); // 获取到的分类数量 $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>
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 = '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>
如果你的网站规模比较小,一个分类下的文章也不多,那么你可以在子导航中列出这个分类下的所有文章:
<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>
以上代码中用到了WP_Query来获取文章列表,该对象的使用方法,可以参考WordPress的官方文档:Class Reference/WP Query和Function 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 '<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中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),