我正在尝试在Wordpress中以编程方式创建类别和子类别。
一旦创建了层次类别,我就将该特定职位分配给该类别。一个帖子只能有一个类别。所以我将标签设置为
false
in
wp_set_post_categories($ post_id,$ cat_id ['term_id'],false);
执行此操作后会收到cat_id
$ cat_id = wp_insert_term($ split_name [$ i],'category',array('slug'=> $ split_slug [$ i],'parent'=> term_exists($ split_name [$ i-1],'类别')['term_id']));
split_name变量具有类别名称。并且split_slug包括该类别的子弹。
在使用wp_set_post_categories
之前,我使用的是wp_set_object_terms
,其中我要传递子弹。这很好用,但是当某些类别在不同类别的层次结构中具有相同的子段时,会将父子段附加到子子段以保持唯一。
如果在类别中创建了新的层次结构,则以上代码可以正常工作。但是使用现有类别时会中断。
总体代码如下
for ($i = 0; $i < count($split_slug); $i++) {
if($i == 0) {
$cat_id = wp_insert_term($split_name[$i], 'category', array('slug' => $split_slug[$i]));
if(count($split_slug) == 1) {
if ($cat_id) {
//wp_set_object_terms($post_id, $split_slug[$i], 'category', true);
wp_set_post_categories( $post_id, $cat_id['term_id'], false ); // setting it to false remove all previous categories associated to that post
add_term_meta ($cat_id['term_id'], 'objectID', $_POST['location_id'], false);
}
}
}
else {
$cat_id = wp_insert_term($split_name[$i], 'category', array('slug' => $split_slug[$i], 'parent'=> term_exists($split_name[$i-1] , 'category' )['term_id']));
if($i == (count($split_slug)-1)){
if($cat_id){
//wp_set_object_terms($post_id, $split_slug[$i], 'category', true);
wp_set_post_categories( $post_id, $cat_id['term_id'], false ); // setting it to false remove all previous categories associated to that post
add_term_meta ($cat_id['term_id'], 'objectID', $_POST['location_id'], false);
}
}
}
}
当在类别中创建新的层次结构时,以上代码可以正常工作,但在将帖子分配给现有类别时中断。我相信问题是wp_insert_term返回的结果。
帮帮我。