在 Woocommerce 中以编程方式添加带有评级的产品评论

Add a product review with ratings programmatically in Woocommerce

标题说明了一切。我知道评论是 Wordpress 中输入的原生评论 post。我已经包含了添加评论的代码。

但问题是我不清楚如何给评论评分以及如何将其与特定产品联系起来。当我使用 comment_post_ID 时,它似乎没有将评论(评论)分配给正确的 post。

$time = current_time('mysql');

$data = array(
    'comment_post_ID' => 1,
    'comment_author' => 'admin',
    'comment_author_email' => 'admin@admin.com',
    'comment_author_url' => 'http://',
    'comment_content' => 'content here',
    'comment_type' => '',
    'comment_parent' => 0,
    'user_id' => 1,
    'comment_author_IP' => '127.0.0.1',
    'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
    'comment_date' => $time,
    'comment_approved' => 1,
);

wp_insert_comment($data);

'comment_post_ID' 是您的评论将显示的地方,所以所需的产品 ID

然后您可以使用 update_comment_meta() 专用的 WordPress 功能来添加评级,例如:

update_comment_meta( $comment_id, 'rating', 3 ); // The rating is an integer from 1 to 5

因此您的代码将类似于 (其中 $product_id 是此评论的目标产品 ID):

$comment_id = wp_insert_comment( array(
    'comment_post_ID'      => 37, // <=== The product ID where the review will show up
    'comment_author'       => 'LoicTheAztec',
    'comment_author_email' => 'loictheaztec@fantastic.com', // <== Important
    'comment_author_url'   => '',
    'comment_content'      => 'content here',
    'comment_type'         => '',
    'comment_parent'       => 0,
    'user_id'              => 5, // <== Important
    'comment_author_IP'    => '',
    'comment_agent'        => '',
    'comment_date'         => date('Y-m-d H:i:s'),
    'comment_approved'     => 1,
) );

// HERE inserting the rating (an integer from 1 to 5)
update_comment_meta( $comment_id, 'rating', 3 );

已测试并按预期工作。

The author email and the user ID need to be some existing ones.

接受的答案不完整,因为问题包含如何将其与特定产品联系起来。此外,评论类型填充 作为评论。如果评论与产品无关,Yoast 架构和其他 不会填充所有变量,Google 会给您关于 架构 [=28= 的警告 ] 标记。

将此添加到已接受的答案中:

'comment_type'          => 'review'

此外,绑定产品(您的 $post_id),备注布尔值和数组。

if($comment_id) update_comment_meta($comment_id, 'rating', 5);
if($comment_id) update_comment_meta($comment_id, 'verified', 1);
    
if($comment_id) update_post_meta($post_id, '_wc_average_rating', '5.00');
if($comment_id) update_post_meta($post_id, '_wc_review_count', '1');
if($comment_id) update_post_meta($post_id, '_wc_rating_count', array(1));

现在 Google 接受这个作为 Woocommerce 3 和 2020 年的魅力。@loictheastec 如果你愿意,你可以自己编辑。