我正在尝试使用从火山口表单收集的数据添加产品。我成功地创建了产品并添加了其他属性,但事实证明,“允许评论”是难以捉摸的。
$post_id = wp_insert_post(array(
\'post_title\' => \'ProductName \'.$data[\'uniquenumber\'],
\'post_type\' => \'product\',
\'post_status\' => \'draft\',
\'post_content\' => $data[ \'description\' ],
\'post_excerpt\' => $data[ \'short_description\' ]
));
wp_set_object_terms( $post_id, \'simple,virtual\', \'product_type\' );
wp_set_object_terms( $post_id, [\'services\'] ,\'product_cat\');
wp_set_object_terms( $post_id, 1 ,\'reviews_allowed\' ); // DOESN\'T WORK
//update_post_meta( $post_id, \'reviews_allowed\', \'yes\'); //CREATES SEPARATE ATTRIBUTE,
// All these work though
update_post_meta( $post_id, \'real_name\', $data[\'first_name\']." ".$data[\'last_name\'] );
update_post_meta( $post_id, \'_nyp\', \'yes\' );
update_post_meta( $post_id, \'_virtual\', \'yes\' );
update_post_meta( $post_id, \'_visibility\', \'visible\' );
我已经搜索了WC代码,我很确定属性是“reviews\\u allowed”,类型是bool。我是新手,所以我希望这是一个容易的问题。
谢谢,约翰
SO网友:Jacob Peattie
在使用WooCommerce产品时,不应使用WordPress post函数。WooCommerce有自己的功能,允许产品正确填充其自定义查找表,并且如果(实际情况下)WooCommerce产品在未来版本中移动到自定义数据结构,则将具有前向兼容性。
您可以看到一些示例here, 但您的代码如下所示:
$product = new WC_Product_Simple();
$cat_id = get_term_by( \'slug\', \'services\', \'product_cat\' );
$product->set_category_ids( [ $cat_id ] );
$product->set_name( \'ProductName \' . $data[\'uniquenumber\'] );
$product->set_status( \'draft\' );
$product->set_description( $data[ \'description\' ] );
$product->set_short_description( $data[ \'short_description\' ] );
$product->set_virtual( true );
$product->set_reviews_allowed( true );
$product->set_catalog_visibility( \'visible\' );
$product->update_meta_data( \'real_name\' );
$product->update_meta_data( \'_nyp\' );
$product->save();
使用此方法,可以将reviews allowed属性设置为
$product->set_reviews_allowed( true );
.