我想以编程方式设置一些产品类别。当一个新产品发布时,它正在工作。但当我可以更新它时,它会显示一个错误,如:后端致命错误:PHP致命错误:无法在插件/自定义同步产品/trade\\u函数中使用WP\\u error类型的对象作为数组。php第100行\\n.任何人都可以帮助我解决此错误。
function set_product_category_woo($T_product_type,$post_id){
$product_categories = term_exists($T_product_type,"product_cat");
if(empty($product_categories)){
$slug=str_replace(" ","_",$T_product_type);
$resp=wp_insert_term($T_product_type,\'product_cat\',array(\'description\'=> \'\',\'slug\' =>$slug));
/****assign category to the product in woo***/
if(isset($resp)){
wp_set_object_terms($post_id,$resp[\'term_id\'], \'product_cat\' );
}else{
file_put_contents("text.txt","\\n".print_r($resp),FILE_APPEND);
}
SO网友:realloc
wp_insert_term
成功时返回数组,出现问题时返回WP\\u错误。
您应该捕捉错误并查找失败的原因。
一个问题可能是,如何创建slug,因为它可能会在创建术语的过程中导致错误。仅使用$slug = sanitize_title( $T_product_type )
或者,更好的是,让函数wp_insert_term
为您创建一个独特的slug。
另一件事是名字本身。根据我之前写的内容,我建议如下更改您的代码:
function set_product_category_woo( $T_product_type, $post_id ) {
$name = trim( stripslashes( $T_product_type ) );
if ( empty( $name ) ) {
return;
}
$product_categories = term_exists( $name, \'product_cat\' );
if ( empty( $product_categories ) ) {
$resp = wp_insert_term( $name, \'product_cat\' );
if ( ! is_wp_error( $resp ) ) {
wp_set_object_terms( $post_id, $resp[\'term_id\'], \'product_cat\' );
}
// rest of your code