今天在学习制作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学习还是很方便,大部分问题都可以在搜索引擎中找到方法去解决,当然了由于也是逐步学习阶段,可能代码写的不是很好很多瑕疵,如有更好的办法欢迎一起讨论。