#установка термина таксономии pa_vid для записи
wp_set_object_terms( $post_id, 240, 'pa_vid', true );
#получение текущих атрибутов если они есть
$atts = get_post_meta( $post_id, '_product_attributes', true );
# если нет, пустой массив под атрибуты
if ( empty( $atts ) ) {
$atts = [];
}
#задаем текущий атрибут pa_vid
$atts[ 'pa_vid' ] = [
'name' => 'pa_vid',
'value' => [ 240 ],
'is_visible' => 1,
'is_variation' => 0,
'is_taxonomy' => 1
];
# сохранение атрибутов
update_post_meta( $post_id, '_product_attributes', $atts );
wp_set_object_terms( $post_id, 240, 'pa_vid', true );
$atts = get_post_meta( $post_id, '_product_attributes', true );
if ( empty( $atts ) ) {
$atts = [];
}
$atts[ 'pa_vid' ] = [
'name' => 'pa_vid',
'value' => [ 240 ],
'is_visible' => 1,
'is_variation' => 0,
'is_taxonomy' => 1
];
update_post_meta( $post_id, '_product_attributes', $atts );
$name = ! empty( $_REQUEST[ 'name' ] ) ? strip_tags( $_REQUEST[ 'name' ] ) : 'Field name is Empty';
И что?
Если это стандартный шаблон чекаута, то добавляете через фильтр.
Если нет, но ничего не мешает собрать поля в массив, и затем циклом вывести их через woocommerce_form_field