Reflektieren Sie die Benutzerdaten der WP-Formularfelder in den WooCommerce-Checkout-Rechnungsfeldern
Posted: 03 Jan 2025, 05:08
Ich verwende ein WP-Formular Elite, um Benutzer für eine Veranstaltung zu registrieren. Ich verwende WooCommerce zum Verkauf von Tickets.
Wie kann ich einige Felder anzeigen, die ein Benutzer vom WP-Formular an WooCommerce Checkout übermittelt:
Ich habe versucht, Daten aus WP Forms über die Datei „functions.php“ wie folgt zuzuordnen:
Aber das hat nicht funktioniert.
Wie kann ich einige Felder anzeigen, die ein Benutzer vom WP-Formular an WooCommerce Checkout übermittelt:
- Vorname,
- Nachname,
- E-Mail,
Telefonnummer.
Ich habe versucht, Daten aus WP Forms über die Datei „functions.php“ wie folgt zuzuordnen:
Code: Select all
//Store WP Forms data in user meta when form is submitted
/
add_action('wpforms_process_complete', 'save_wpforms_to_user_meta', 10, 4);
function save_wpforms_to_user_meta($fields, $entry, $form_data, $entry_id) {
if (!is_user_logged_in()) {
return;
}
$user_id = get_current_user_id();
// Special handling for name field which has first and last components
if (isset($fields[6])) {
update_user_meta($user_id, 'wpforms_first_name', $fields[6]['first']);
update_user_meta($user_id, 'wpforms_last_name', $fields[6]['last']);
}
// Save other fields
$field_keys = array(
7 => 'phone',
37 => 'email',
14 => 'mcm_number',
16 => 'specialisation',
41 => 'specializations',
17 => 'institution',
18 => 'designation'
);
foreach ($field_keys as $id => $key) {
if (isset($fields[$id])) {
update_user_meta($user_id, 'wpforms_' . $key, $fields[$id]['value']);
}
}
}
// Auto-populate WooCommerce checkout fields from user meta
add_filter('woocommerce_checkout_get_value', 'populate_checkout_from_user_meta', 10, 2);
function populate_checkout_from_user_meta($value, $input) {
if (!empty($value) || !is_user_logged_in()) {
return $value;
}
$user_id = get_current_user_id();
// Map WooCommerce fields to your WP Forms fields
$field_mapping = array(
'billing_first_name' => 'wpforms_first_name',
'billing_last_name' => 'wpforms_last_name',
'billing_email' => 'wpforms_email',
'billing_phone' => 'wpforms_phone'
// Add any other WooCommerce fields you want to populate
);
// Check if we have a mapping for this field
if (isset($field_mapping[$input])) {
$meta_value = get_user_meta($user_id, $field_mapping[$input], true);
if (!empty($meta_value)) {
return $meta_value;
}
}
return $value;
}
// Add this debugging function to verify the data is being saved
add_action('wp_footer', 'verify_saved_user_meta');
function verify_saved_user_meta() {
if (is_user_logged_in() && is_checkout()) {
$user_id = get_current_user_id();
$debug_data = array(
'first_name' => get_user_meta($user_id, 'wpforms_first_name', true),
'last_name' => get_user_meta($user_id, 'wpforms_last_name', true),
'email' => get_user_meta($user_id, 'wpforms_email', true),
'phone' => get_user_meta($user_id, 'wpforms_phone', true)
);
error_log('Saved User Meta for Checkout:');
error_log(print_r($debug_data, true));
}
}