我正在尝试插入阵列中的产品
产品已成功创建,除子类别外,其他值均正常插入
这里的问题是,子类别已注册为顶级(无父级)或根本未注册。有人知道我在这里遗漏了什么吗
外部自功能
$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\');}
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。如果您使用完全相同的名称,则更安全。