WooCommerce REST API:创建变体

时间:2018-12-24 作者:BroodjeBE

我使用Woocommerce REST API在添加新产品时自动创建产品变体。其背后的想法是,对于每个新产品,都需要添加产品纸张尺寸的变化,并使用特定公式自动计算价格。不同变体的创建是正确的。但是,后端似乎没有从下拉列表中正确选择变体,仍然显示为“每个变体”,而不是所选变体。

Product variation overview

然而,在查看特定变体的详细信息时,我确实看到所有单个变体都已正确创建,并且添加了特定变体信息。Product Variation description

我想要实现的是将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);
}

1 个回复
最合适的回答,由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\')");