以编程方式创建Wordpress的类别和子类别

时间:2019-02-24 19:09:14

标签: php arrays wordpress plugins

我正在尝试在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返回的结果。

帮帮我。

0 个答案:

没有答案