以编程方式添加子类别时出现问题

时间:2021-11-10 作者:Alexander

我正在尝试插入阵列中的产品
产品已成功创建,除子类别外,其他值均正常插入
这里的问题是,子类别已注册为顶级(无父级)或根本未注册。有人知道我在这里遗漏了什么吗

外部自功能

        $parent_cat_a= term_exists($myproduct[\'12\'], \'category\');
        $parent_cat_a_id= $parent_term_a[\'term_id\'];
        eisagwghproion($myproductssimple);

内部功能

 $product_to_create = array(
            \'post_content\' => \'\',
            \'post_status\' => "publish",
            \'post_title\' => $myproduct[\'6\'], 
            \'post_status\' => \'publish\',
            \'post_date\' => $myproduct[\'22\'],
            \'post_parent\' => \'\',
            \'post_type\' => "product",
                    );
                $post_id= wp_insert_post($product_to_create, true);
                if (!$post_id) //
                {
                    return false;
                }            
                update_post_meta($post_id, \'_price\', $myproduct[\'17\']);
                update_post_meta($post_id, \'_regular_price\', $myproduct[\'17\']);
                update_post_meta($post_id, \'_sku\', $myproduct[\'2\'] );
                wp_set_object_terms($post_id, \'simple\', \'product_type\');

                                  if(strlen($myproduct[\'13\']) > 1){
                    $parent_cat_a = term_exists($myproduct[\'13\'], \'product_cat\');
                    if($parent_cat_a !== null) //εαν υπαρχει η υπο κατηγορια
                        {
                            wp_set_object_terms($post_id, $myproduct[\'13\'] , \'product_cat\');
                        }
                        else //εαν δεν υπάρχει η υπο κατηγορια
                        {
                            $parent_cat_a_id = $parent_cat_a[\'term_id\'];  
                            wp_insert_term(
                                $myproduct[\'13\'], // the term 
                                \'product_cat\', // the taxonomy
                                array(
                                \'slug\' => $myproduct[\'13\'],
                                \'parent\'=> $parent_cat_a_id
                                )
                            );
                            wp_set_object_terms($post_id, $myproduct[\'13\'] , \'product_cat\');
                        }
                    }
                    else{wp_set_object_terms($post_id, $myproduct[\'12\'] , \'product_cat\');}

1 个回复
SO网友:tiago calado

使用此代码,我们添加了一个新的主类别

wp_insert_term( \'My New Category\', \'product_cat\', array(\'parent\' => 0));
然后知道类别父id,我们可以添加这样的子类别

wp_insert_term( \'My New Sub-category\', \'product_cat\', array(\'parent\' => 72));
这或多或少是您所拥有的,但当我运行函数get\\u terms时,我会收到一个包含两个值的数组,这意味着您的变量$parent\\u cat\\u a会是这样的

Array
(
    [term_id] => 74
    [term_taxonomy_id] => 74
)
这意味着当您调用$parent\\u cat\\u a时,您没有收到父id,您只是放置了一个具有多个选项的数组,worpress将不知道如何使用它,您应该调用$parent\\u cat\\u a[\'term\\u id\']

那么你在哪里

$parent_cat_a = term_exists($myproduct[\'13\'], \'product_cat\');
我会用

$parent_cat_aa = term_exists($myproduct[\'13\'], \'product_cat\');
$parent_cat_a = $parent_cat_aa[\'term_id\'];
这可能会使您的代码正常工作,还有一件事,就像上面的第一个代码一样,在wp\\u insert\\u term()中,在父级之前您不需要slug,wordpress会为您放置它,会检查类别名称并生成一个没有空格的slug。如果您使用完全相同的名称,则更安全。

相关推荐

在将代码添加到函数后无法登录WordPress wp-admin。php

我在函数末尾添加以下代码。php文件,用于根据自定义帖子的帖子标题填充分类法。问题是,当我添加代码时,尝试登录wp admin时会出现以下错误。非常感谢您能帮助我们弄清楚为什么会发生这种情况。Error:错误:由于意外输出,Cookie被阻止。有关帮助,请参阅此文档或尝试支持论坛。Code: <?php function update_custom_terms($post_id) { // only update terms if