我使用Woocommerce REST API在添加新产品时自动创建产品变体。其背后的想法是,对于每个新产品,都需要添加产品纸张尺寸的变化,并使用特定公式自动计算价格。不同变体的创建是正确的。但是,后端似乎没有从下拉列表中正确选择变体,仍然显示为“每个变体”,而不是所选变体。
然而,在查看特定变体的详细信息时,我确实看到所有单个变体都已正确创建,并且添加了特定变体信息。
我想要实现的是将attrbute的名称作为变体中的选定选项,但没有任何运气。关于我还需要补充什么才能实现这一目标,有什么建议吗?处理变体创建的代码如下所示:
$taxonomy = \'pa_papiersoort\';
$papers = get_terms( $taxonomy );
foreach( $papers as $single_paper ) {
$price = $this->calculate_price( $post->ID, $single_paper->name, 1 );
$data = [
\'regular_price\' => (string)$price,
\'description\' => $single_paper->name,
\'attributes\' => [
[
\'name\' => \'Papiersoort\',
\'slug\' => \'papiersoort\',
\'option\' => $single_paper->name
]
]
];
$woocommerce->post("products/$post->ID/variations", $data);
}
最合适的回答,由SO网友:BroodjeBE 整理而成
这花了我一段时间,但我已经能够通过直接在数据库中写入来解决这个问题,所以如果有人遇到同样的问题,我会在这里为其他人分享我的解决方案。
要在创建变体时自动选择属性,需要在数据库中执行两项操作。变更岗位名称需要以“产品名称变更名称”的形式进行调整。第二部分是添加一个新的Posteta,键为“attribute\\pa\\uuem>taxonomy”,元值为所选属性的slug。
直接更改数据库中的这两项内容将在后端概览中正确分配所选属性。
$wpdb->query("UPDATE {$wpdb->prefix}posts SET post_title = \'$product->name $single_paper\' WHERE ID = $id");
$wpdb->query("INSERT INTO {$wpdb->prefix}postmeta(`post_id`, `meta_key`,
`meta_value`) VALUES (\'$id\', \'attribute_pa_papiersoort\', \'$slug\')");