Reflektieren Sie die Benutzerdaten der WP-Formularfelder in den WooCommerce-Checkout-RechnungsfeldernPhp

PHP-Programmierer chatten hier
Guest
 Reflektieren Sie die Benutzerdaten der WP-Formularfelder in den WooCommerce-Checkout-Rechnungsfeldern

Post by Guest »

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:
  • Vorname,
  • Nachname,
  • E-Mail,
    Telefonnummer.
Können wir wpform-Daten speichern und automatisch ausfüllen? WooCommerce? Grundsätzlich muss jeder Benutzer, der sich für die Veranstaltung anmeldet, ein Profil/Konto erstellt haben. Wie kann das erreicht werden?
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));
}
}

Aber das hat nicht funktioniert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post