Создание атрибута
Для создания атрибута в woocommerce, есть функция wc_create_attribute()
Для удобства работы с ней написал следующий код
function create_attribute($name, $slug){
if(strlen($slug) > 27){
$slug = substr($slug, 0, 27);
}
// создание нового атрибута
$insert = wc_create_attribute(array(
'name'=> $name,
'slug' => $slug,
'type' => 'select',
'order_by' => 'menu_order',
'has_archives' => false)
);
if (is_wp_error($insert)) {
return $insert->get_error_message();
}else{
return $insert; // возвращает $id атрибута
}
}
В коде прописал обрезку урла если он больше 27 символов, потому что сама функция wc_create_attribute() не дает добавить атрибут если урл больше 28 символов, и выводит соответствующую ошибку.
Пример: созданим атрибут «Мощность», с урлом «power»
wc_create_attribute(‘Мощность’, ‘power’);
Создание значений атрибута
Для добавления значени атрибута использую стандартную функцию, для добавления термин, wp_insert_term()
function create_attribute_item($name, $slug, $taxonomy){
$insert_res = wp_insert_term(
$name,
$taxonomy,
array(
'description' => '',
'slug' => $slug
)
);
if( is_wp_error( $insert_res ) ){
return $insert_res->get_error_message();
} else {
$term_id = $insert_res['term_id'];
return $term_id;
}
}
где $taxonomy — это урл атрибута с приставкой ‘pa_’
Пример: созданим значения атрибута «Мощность»
create_attribute_item(’10’, ’10’, ‘pa_power’);
create_attribute_item(’20’, ’20’, ‘pa_power’);
create_attribute_item(’30’, ’30’, ‘pa_power’);
Примечание
Если за один сеанс выполнения кода, использовать создание атрибута и его значений, то значения не создадутся из-за того что якобы нет нужной таксономии, хотя сам атрибут создастся. По этому я сначало создаю все атрибуты а потом следующим сенсом крона создаю значения атрибутов


