#php #wordpress #woocommerce #attributes #product
#php #wordpress #woocommerce #атрибуты #продукт
Вопрос:
У меня есть атрибут, который является таксономией, мне нужно обновить ярлык атрибута. Вот что я сделал на данный момент
$args = array(
'category' => array('chinese'),
'orderby' => 'name',
);
$products = wc_get_products($args);
foreach($products as $product)
{
$attribute = $product->get_attributes();
foreach($attribute as $attributeItem)
{
if($attributeItem->is_taxonomy())
{
$attributeItem->get_taxonomy_object()->attribute_label = "new-label"; // set new label
}
}
$product->set_attributes($attribute);
$product-save();
}
Если я перечитываю атрибут продукта, ярлык не обновляется (считывается старая метка), мне нужно обновить ярлык атрибута и сохранить его в базе данных, чтобы при обратном чтении значение отражало недавно обновленную метку.
Чего мне не хватает?
Ответ №1:
Чтобы изменить / обновить данные таксономии атрибута продукта, вам нужно использовать wc_update_attribute()
функцию, so в вашем коде, для изменения названия ярлыка атрибута продукта:
$products = wc_get_products( array('category' => 't-shirts', 'orderby' => 'name') );
// Loop through queried products
foreach($products as $product) {
// Loop through product attributes
foreach( $product->get_attributes() as $attribute ) {
if( $attribute->is_taxonomy() ) {
$attribute_id = $attribute->get_id(); // Get attribute Id
$attribute_data = wc_get_attribute( $attribute_id ); // Get attribute data from the attribute Id
// Update the product attribute with a new taxonomy label name
wc_update_attribute( $attribute_id, array(
'name' => 'New label', // <== == == Here set the taxonomy label name
'slug' => $attribute_data->slug,
'type' => $attribute_data->type,
'order_by' => $attribute_data->order_by,
'has_archives' => $attribute_data->has_archives,
) );
}
}
}
Протестировано и работает.
Комментарии:
1. Конечно, решение протестировано и работает, как ожидалось!! Спасибо @LoicTheAztec