Verhindern Sie, dass Versandfelder durch die Abrechnung überschrieben werden, wenn „An eine andere Adresse versenden?“ aPhp

PHP-Programmierer chatten hier
Guest
 Verhindern Sie, dass Versandfelder durch die Abrechnung überschrieben werden, wenn „An eine andere Adresse versenden?“ a

Post by Guest »

Ich passe das WooCommerce-Checkout-Verhalten an und habe ein Problem mit der Meldung „An eine andere Adresse versenden?“ festgestellt. Kontrollkästchen.
Wenn das Kontrollkästchen aktiviert ist, werden Versandfelder angezeigt und die Berechnungen basieren auf der Versandadresse. Dies funktioniert wie erwartet.
Wenn das Kontrollkästchen jedoch deaktiviert ist, stellt WooCommerce die Versandfelder automatisch so ein, dass sie mit den Rechnungsfeldern übereinstimmen. Ich möchte dieses Verhalten verhindern.
Was ich erreichen möchte:
Versandfelder anzeigen, unabhängig davon, ob das Kontrollkästchen aktiviert oder deaktiviert ist.
Abrechnungs- und Versandfelder völlig unabhängig halten.
Stellen Sie sicher, dass alle Berechnungen ausschließlich auf den Versandfeldern basieren, auch wenn das Kontrollkästchen deaktiviert ist.
Was ich versucht habe:
Ich habe die folgenden Lösungen versucht:
Verwendet woocommerce_checkout_posted_data-Filter zum Löschen von Rechnungsfeldern, wenn das Kontrollkästchen deaktiviert ist:

Code: Select all

add_filter('woocommerce_checkout_posted_data', 'force_shipping_fields_only');
function force_shipping_fields_only($data) {
if (isset($data['ship_to_different_address']) && !$data['ship_to_different_address']) {
foreach ($data as $key => $value) {
if (strpos($key, 'billing_') !== false) {
$data[$key] = ''; // Clear billing fields
}
}
}
return $data;
}
Dies hinderte WooCommerce jedoch nicht daran, die Versandfelder mit den Rechnungsdaten zu überschreiben.
Es wurde versucht, die Kundendaten in woocommerce_checkout_update_order_review zu überschreiben:

Code: Select all

add_action('woocommerce_checkout_update_order_review', 'force_shipping_only_calculation');
function force_shipping_only_calculation($posted_data) {
WC()->customer->set_shipping_country($posted_data['shipping_country']);
WC()->customer->set_shipping_state($posted_data['shipping_state']);
// And so on for other fields...
}
Aber auch dadurch wurde das Problem nicht behoben.
Erwartetes Verhalten:
Wenn das Kontrollkästchen deaktiviert ist:Versandfelder sollten bearbeitbar bleiben und nicht durch Rechnungsdaten überschrieben werden.
Berechnungen sollten immer auf Versandfeldern basieren.
Tatsächliches Verhalten:
Wenn das Kontrollkästchen deaktiviert ist:< /p>
Versandfelder werden durch Rechnungsdaten überschrieben.
WooCommerce ignoriert die unabhängigen Versandfelder.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post