Hallo, heute habe ich mit Woo-Commerce gearbeitet und einige benutzerdefinierte Checkout-Felder gemäß den Benutzeranforderungen erfolgreich erstellt, aber ich kann sie nicht in der Datenbank speichern.
Hier, wie ich benutzerdefinierte Checkout-Felder erstellt habe … es befindet sich im untergeordneten Thema functions.php
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
// Over Ridding, Removing, Creating New Fields.
function custom_override_checkout_fields( $fields ) {
unset($fields['billing']['billing_company']);
unset($fields['billing']['billing_address_2']);
unset($fields['order']['order_comments']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_email']);
$fields['billing']['your_name'] = array(
'type' => 'text',
'label' => __('Full Name', 'woocommerce'),
'placeholder' => _x('Full Name', 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
$fields['billing']['your_phone_number'] = array(
'type' => 'text',
'label' => __('Your Phone Number', 'woocommerce'),
'placeholder' => _x('Your Phone Number', 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
$fields['billing']['recipient_name'] = array(
'type' => 'text',
'label' => __("Recipient's Name", 'woocommerce'),
'placeholder' => _x("Recipient's Name", 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
$fields['billing']['recipient_company_name'] = array(
'type' => 'text',
'label' => __("Recipient's Company (if any)", 'woocommerce'),
'placeholder' => _x("Recipient's Company (if any)", 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
$fields['billing']['recipient_phone_number'] = array(
'type' => 'text',
'label' => __("Recipient's Phone Number", 'woocommerce'),
'placeholder' => _x("Recipient's Phone Number", 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
$fields['billing']['recipient_address'] = array(
'type' => 'text',
'label' => __("Recipient's Address", 'woocommerce'),
'placeholder' => _x("Recipient's Address", 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
In db, wo ich nach den Feldern suche. es ist wp_postmeta
Tisch. Im Anhang ist ein Screenshot, den ich mit der Bestell-ID suche.
Jetzt habe ich die hinzugefügt checkout_update_order_meta
Aktion, um das Bestellmeta zu aktualisieren und meine benutzerdefinierten Felder zu speichern. Aber es scheint, als ob es nicht funktioniert, denn wenn ich einchecke wp_postmeta
Tabelle mit der zuletzt erstellten Auftrags-ID. Ich finde meine benutzerdefinierten Felder dort nicht.
add_action( 'woocommerce_checkout_update_order_meta', 'some_custom_checkout_field_update_order_meta' );
function some_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['recipient_address'] ) ) {
add_post_meta( $order_id, 'recipient_address', sanitize_text_field( $_POST['recipient_address'] ) );
}
if (!empty($_POST['recipient_phone_number'])) {
update_post_meta($order_id, 'recipient phone number', sanitize_text_field($_POST['recipient_phone_number']));
}
}
Es ist mein erster Umgang mit Woocommerce-Code. Ich habe viel gesucht und bin hierher gekommen, als ich es aufgegeben habe. Bitte helfen Sie mir, dieses Rätsel zu lösen.
Bitte korrigiert mich was ich falsch mache. Auch nach diesem Schritt muss ich diese benutzerdefinierten Felder im WordPress-Dashboard unter woocommerce > Bestellungen > Bestelldetails anzeigen. Wenn es also einen hilfreichen Link dafür gibt, geben Sie ihn bitte an.
Danke im Voraus.