Программно создавать категории и подкатегории Wordpress - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь создавать категории и подкатегории программно в 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.

выручите меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...