我试图检查'categoryone'是否有父母。知道我可以检查并看到有一个名为categoryone的类别,但如果categoryone有父类别则不行。我试图编写代码如下的代码。
$tid = term_exists('categoryone', 'category', 0);
$term_ids = [];
if ( $tid !== 0 && $tid !== null )
{
$term_ids[] = $tid['term_id'];
}
else
{
// If there is not a parent category!
$insert_term_id = wp_insert_term( 'categoryone', 'category' );
if ( ! is_wp_error )
$term_ids[] = $insert_term_id;
}
wp_set_post_categories( $insert_id, $term_ids );
你可以使用这样的东西(在你的functions.php
文件中粘贴)
function category_has_parent($catid){
$category = get_category($catid);
if ($category->category_parent > 0){
return true;
}
return false;
}
从模板中调用此方法
if(category_has_parent($tid)) {
// it has a parent
}
检查孩子
function has_Children($cat_id)
{
$children = get_terms(
'category',
array( 'parent' => $cat_id, 'hide_empty' => false )
);
if ($children){
return true;
}
return false
}
从模板中调用此方法
if(has_Children($tid)) {
// it has children
}
您可以使用get_category()通过传递term_id来获取当前类别详细信息
$tid = term_exists('categoryone', 'category', 0);
$t_details=get_category($tid);
if(!empty($t_details->parent)){
echo $t_details->parent; // parent category id or $t_details->category_parent
}
get_category()返回从参考站点获取的如下对象
stdClass Object
(
[term_id] => 85
[name] => Category Name
[slug] => category-name
[term_group] => 0
[term_taxonomy_id] => 85
[taxonomy] => category
[description] =>
[parent] => 70
[count] => 0
[cat_ID] => 85
[category_count] => 0
[category_description] =>
[cat_name] => Category Name
[category_nicename] => category-name
[category_parent] => 70
)
编辑要获取子类别,您可以通过传递arguments数组来使用get_categories()。
亲
(整数)仅显示由其ID标识的类别的直接后代(即仅限子级)的类别
$args=array('parent'=>$tid);
$child_categories=get_categories($args);
那么你可以使用get_category_parents()
(看看链接阅读参数等)。这将按层次顺序返回所有父项的列表。在这种情况下,如果您只想要最直接的父类别,您可以执行以下操作:
<?php
$parent_cats = get_category_parents( $cat, false, ',' );
$parent_cat = explode(",", $parent_cats);
echo $parent_cat[0];
?>
这将回显第一个父类别(当前类别正上方的类别)。
要明确:
在get_category_parents()
- arg 1是类别id(我只是任意使用$cat
)
- arg 2是你想要wp为每个返回的父类别添加一个链接
- arg 3是用于分隔返回类别的分隔符(如果有)
在explode()
- arg 1是要查找以分隔数组中的字符串的分隔符
- arg 2是要分离的源字符串
快乐的编码!
使用以下代码检查类别的父级和子级。
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); // get current term
$parent = get_term($term->parent, get_query_var('taxonomy') ); // get parent term
$children = get_term_children($term->term_id, get_query_var('taxonomy')); // get children
if(($parent->term_id!="" && sizeof($children)>0)) {
// has parent and child
}elseif(($parent->term_id!="") && (sizeof($children)==0)) {
// has parent, no child
}elseif(($parent->term_id=="") && (sizeof($children)>0)) {
// no parent, has child
}
@ M Khalid Junaid
为了扩展您的答案,我使用您的代码的基础来检查该类别是否没有父母,并且是类别/分类法heriarchy中的顶级项目。我包括这个,因为当我偶然发现这个帖子时,我正在寻找它,也许其他人也在做同样的事情。
<?php
$args = array(
'taxonomy' = 'categories'; // If using custom post types, type in the custom post type's name
);
$terms = get_terms( $args );
foreach ( $terms as $term ) {
$has_parent = $term->parent;
$name = $term->name;
// If it doesn't have parents...
if ( !$has_parent ) {
// ...then it's the top tier in a hierarchy!
echo "Tier 1:" $name . '<br />';
}
}
?>
第1层:类别名称 第1层:另一个类别名称 第1层:所有顶级类别
$queried = $wp_query->get_queried_object();
if ($queried->category_parent) {
// category has parent
}