Создание атрибута
Для создания атрибута в 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’);
Примечание
Если за один сеанс выполнения кода, использовать создание атрибута и его значений, то значения не создадутся из-за того что якобы нет нужной таксономии, хотя сам атрибут создастся. По этому я сначало создаю все атрибуты а потом следующим сенсом крона создаю значения атрибутов