我正在创建一个插件并添加一些类别
某些类别是子类别,例如:
衣服
帽子
衬衫
我添加我的类别:
function addCategory($name, $description, $slug){
$term = wp_insert_term( $name, 'product_cat', [
'description'=> $description,
'slug' => $slug ]
);
if ( is_wp_error( $term ) ) {
$term_id = $term->error_data['term_exists'] || null;
return false;
} else {
$term_id = $term['term_id'];
add_term_meta ($term_id, "display_style", "products", true);
return $term_id;
}
}
如果在我的类别对象中parent_id
与0
不同,那么我会调用此函数:
function updateParentID($localID, $parentLocalID){
global $wpdb;
$table_name = $wpdb->prefix.'term_taxonomy';
$sql ="UPDATE $table_name SET parent = $parentLocalID WHERE term_id = $localID";
$rez = $wpdb->query($sql);
return $rez;
}
如果我查看我的term_taxonomy
表,我确实拥有parent
字段的正确ID。
但是,如果在管理面板上我检查了类别,我看不到类别,但项目数是4:
如果单击“名称”列按字母顺序进行过滤,则会显示:
从我可以看到它们在数据库中正确链接:
我注意到在管理面板中,如果我编辑子类别并只保存而不更改任何细节,那么它们将正确显示:
怎样才能让他们一直显示出来。添加父母时我错过了什么。
注意:
我注意到在文档中有一个wp_update_term
,但我找不到任何wp_update_term_taxonomy
答案 0 :(得分:0)
要设置术语的父/子,为什么要使用单独的自定义查询($ wpdb-> query())?好吧,但我认为你可以使用wp_insert_term参数中的父参数。
实施例,
wp_insert_term(
'Banana', // the term
'product_cat', // the taxonomy
array(
'description'=> 'Sweet banana',
'slug' => 'banana',
'parent'=> $parent_term_id
)
);
答案 1 :(得分:0)
所以我设法让更新工作,但必须使用wp_update_term
最后我得到了这段代码:
function updateParentID($localID, $parentLocalID){
global $wpdb;
$table_name = $wpdb->prefix.'term_taxonomy';
$value = wp_update_term( $localID, 'product_cat', array( 'parent' => $parentLocalID ) );
if ( is_wp_error( $value ) ) {
return $value->get_error_message();;
}else {
return true;
}
}