溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用WordPress制作主題導(dǎo)航菜單

發(fā)布時(shí)間:2023-02-24 09:08:40 來源:億速云 閱讀:125 作者:iii 欄目:建站服務(wù)器

這篇文章主要介紹“怎么使用WordPress制作主題導(dǎo)航菜單”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“怎么使用WordPress制作主題導(dǎo)航菜單”文章能幫助大家解決問題。

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

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

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

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

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

下面是一個(gè)該函數(shù)的使用示例,這里將顯示一個(gè)所有文章分類的<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>

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

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

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

<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>

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

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

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

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

在文章頁獲取該文章的第一個(gè)分類:

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

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

上面我們講解了如何獲取當(dāng)前分類的id,下面我們來講講如何制作子導(dǎo)航。首先,我們來制作一個(gè)當(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>

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

<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>

五、頁面page的獲取

WordPress的頁面page可以通過wp_list_pages()來列出,不過這個(gè)函數(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>

關(guān)于“怎么使用WordPress制作主題導(dǎo)航菜單”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI