Программное создание атрибута и его значения в woocommerce

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Создание атрибута

Для создания атрибута в 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’);

Примечание

Если за один сеанс выполнения кода, использовать создание атрибута и его значений, то значения не создадутся из-за того что якобы нет нужной таксономии, хотя сам атрибут создастся. По этому я сначало создаю все атрибуты а потом следующим сенсом крона создаю значения атрибутов

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *