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;
}
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...
}
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.