Я пытаюсь создавать категории и подкатегории программно в WordPress.И как только иерархическая категория создана, я назначаю этот конкретный пост этой категории.Один пост может иметь только одну категорию.Поэтому я устанавливаю тег на false
в
wp_set_post_categories ($ post_id, $ cat_id ['term_id'], false);
и cat_id полученделая это
$ cat_id = wp_insert_term ($ split_name [$ i], 'category', массив ('slug' => $ split_slug [$ i], 'parent' => term_exists ($ split_name)[$ i-1], 'category') ['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.
выручите меня.