Для этого вам нужно сопоставить поля формы гравитации с полями формы извлечения woocommerce, создав собственный атрибут для формы гравитации.
Ниже приведен лишь пример шагов и хуков, которые можно реализовать для достижения вышеуказанной функциональности.
add_action( 'gform_field_standard_settings', 'gf_add_woo_field' , 10, 2 );
add_action( 'gform_editor_js','gf_editor_script' , 11, 2 );
add_action( 'gform_after_submission', 'set_post_content', 10, 2 );
function gf_add_woo_field( $position, $form_id ) {
$woo_fields = WC()->checkout()->checkout_fields;
для извлечения полей
if ( $position == 1368 ) {?>
<li class="woo_checkout_field_type_setting field_setting">
<label for="woo_checkout_field_type" class="section_label">
<?php esc_html_e( 'Field Type', 'gravityforms' ); ?>
<?php gform_tooltip( 'form_field_type' ) ?>
</label>
<select id="woo_checkout_field_type" onchange="if(jQuery(this).val() == '') return; jQuery('#field_settings').slideUp(function(){StartChangeWooFieldType(jQuery('#woo_checkout_field_type').val());});">
foreach ($woo_fields as key=>val){ ?>
<option value="<?php echo $key; ?>"><?php echo $val; ?></option>
<?php }
}
?>
function gf_editor_script() {
?>
<script type='text/javascript'>
jQuery(document).bind("gform_load_field_settings",
function(event, field, form){
//follow the code for attribute Field Type in post custom field gravity form
});
</script>
<?php }
function set_post_content( $entry, $form ) {
if ( ! empty( $form['fields'] ) && ! empty( $entry ) ) {
foreach ( $form['fields'] as $field ) {
if ( $field->type == '' ) {
//find the attribute match and save in usermeta from entry creator email id or user id
$field_id = $field->id;
$value = $entry[ $field_id ];
update($user_id,'billing_address',$value);
}
}
}
}
Примечание. Не вставляйте один и тот же код. Вам придется изменить какую-то его часть согласно вашему требованию.
Вы можете найти существующее дополнение *1016* и использовать его.
Следуйте: https://wisdmlabs.com/blog/add-custom-attribute-to-gravity-forms-field/