儿童类别未出现在wordpress管理菜单中

时间:2017-12-08 08:36:16

标签: php wordpress

我正在创建一个插件并添加一些类别

某些类别是子类别,例如:

  • 衣服

    • 帽子

    • 衬衫

我添加我的类别:

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_id0不同,那么我会调用此函数:

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:

missing categories

如果单击“名称”列按字母顺序进行过滤,则会显示:

appeared

从我可以看到它们在数据库中正确链接:

database linked

我注意到在管理面板中,如果我编辑子类别并只保存而不更改任何细节,那么它们将正确显示:

good rendering

怎样才能让他们一直显示出来。添加父母时我错过了什么。

注意:

我注意到在文档中有一个wp_update_term,但我找不到任何wp_update_term_taxonomy

2 个答案:

答案 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;
  }
}