我如何以编程方式向WooCommerce产品添加‘REVIEWS_ALLOWED’?

时间:2020-05-06 作者:Johnnysmooth

我正在尝试使用从火山口表单收集的数据添加产品。我成功地创建了产品并添加了其他属性,但事实证明,“允许评论”是难以捉摸的。

$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。我是新手,所以我希望这是一个容易的问题。

谢谢,约翰

2 个回复
SO网友:Brian Bruman

据我所知reviews_allowed 在woocommerce中,它不是一个对象术语、属性、post meta的一部分或诸如此类的东西。

这只是comment_status 在帖子本身。

您可以使用以下命令在插入帖子时启用评论

$post_id = wp_insert_post(array(
    . . . . 
    \'comment_status\' => \'open\'
));

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 );.