今天在學習制作WordPress主題的時候,遇到了一個麻煩,具體如下:
我在后臺使用cmb2工具創建了一個主題設置項,可選擇首頁顯示的分類,分類下顯示的文章數量等等。
但在寫循環輸出的時候遇到一個問題,后臺為了用戶方便使用的是勾選分類的形式,存儲在數據庫中是獲取被勾選分類的別名排列成一個數組。
但在循環中需要使用分類的ID去獲取分類信息。后來在 許小珂博客 中查到了 get_term_by() 函數。
函數介紹
get_term_by()函數主要用來快速查找某一個分類的名稱、別名和id的值,只要提供別名、名稱或編號其中一個,就可以獲取它其余的信息,省時省力又精確。
函數解析
<?php get_term_by( $field, $value, $taxonomy, $output, $filter ) ?>
- $field——id、slug、name 必填項
- $value—-$field的值 必填項
- $taxonomy—-自定義分類方式的名稱 必填項
使用介紹
根據分類名稱獲取分類名稱值為Theme的別名
<?php
$item = get_term_by('name','Theme','products');
echo $item->slug;
?>
根據id獲取id值為21的分類的別名
<?php
$item = get_term_by('id','21','products');
echo $item->slug;
?>
根據別名獲取別名值為theme的分類名稱
<?php
$item = get_term_by('slug','theme','products');
echo $item->name;
?>
根據id獲取id值為21的分類的分類名稱
<?php
$item = get_term_by('id','21','products');
echo $item->name;
?>
根據別名獲取別名值為theme的分類的id
<?php
$item = get_term_by('slug','theme','products');
echo $item->term_id;
?>
根據分類名稱獲取分類名稱值為Theme的分類的id
<?php
$item = get_term_by('name','Theme','products');
echo $item->term_id;
?>
以上是函數的介紹和具體使用方法,而我遇到的問題就是用這個函數去解決的,如下
<?php
shop_cat 和shop_num 是獲取到后臺勾選的分類和填寫的文章數量
$shop_cat = mfisp_index_shop('shop_cat');
$shop_num = mfisp_index_shop('shop_num');
由于后臺勾選的分類是多項的,所以直接遍歷將所有獲取分類別名都轉成分類ID
$shop_ids = array();
foreach($shop_cat as $v){
$shops = get_term_by('slug', $v, 'servertype');
$shop_ids[] = $shops->term_id;
}
wordpress學習還是很方便,大部分問題都可以在搜索引擎中找到方法去解決,當然了由于也是逐步學習階段,可能代碼寫的不是很好很多瑕疵,如有更好的辦法歡迎一起討論。