function set_product_attributes($product_id, $taxonomy, $term_name) {
$taxonomy = 'pa_' . $taxonomy;
$term_slug = sanitize_title($term_name);
if (!term_exists($term_name, $taxonomy)) {
$term_data = wp_insert_term($term_name, $taxonomy);
$term_id = $term_data['term_id'];
} else {
$term_id = get_term_by('name', $term_name, $taxonomy)->term_id;
}
$product = wc_get_product($product_id);
$attributes = (array) $product->get_attributes();
/* if (array_key_exists($taxonomy, $attributes)) {
foreach ($attributes as $key => $attribute) {
if ($key == $taxonomy) {
$options = (array) $attribute->get_options();
$options[] = $term_id;
//$options = [$term_id];
$attribute->set_options($options);
$attributes[$key] = $attribute;
break;
}
}
$product->set_attributes($attributes);
} else {
$attribute = new WC_Product_Attribute();
$attribute->set_id(sizeof($attributes) + 1);
$attribute->set_name($taxonomy);
$attribute->set_options(array($term_id));
$attribute->set_position(sizeof($attributes) + 1);
$attribute->set_visible(true);
$attribute->set_variation(false);
$attributes[] = $attribute;
$product->set_attributes($attributes);
} */
$attribute = new WC_Product_Attribute();
$attribute->set_id(wc_attribute_taxonomy_id_by_name($taxonomy));
$attribute->set_name($taxonomy);
$attribute->set_options(array($term_id));
//$attribute->set_position(sizeof($attributes) + 1);
$attribute->set_visible(true);
$attribute->set_variation(false);
$attributes[$taxonomy] = $attribute;
$product->set_attributes($attributes);
$product->save();
}