Ich habe einige Checkout-Felder mit ähnlichen Daten erstellt und sie sind erforderlich.
add_filter('woocommerce_checkout_fields', 'custom_woocommerce_billing_fields', 50);
function custom_woocommerce_billing_fields($fields) {
$fields['billing']['billing_company'] = array(
'label' => 'Company',
'type' => 'text',
'class' => array( 'form-row-first' ),
'required' => true,
);
$fields['billing']['billing_OIB'] = array(
'label' => 'OIB',
'type' => 'text',
'class' => array( 'form-row-last' ),
'required' => true,
);
}
Ein Kunde hat eine Radio-Button-Option, um auszuwählen, ob er als Privatperson oder im Auftrag eines Unternehmens kauft. Wenn er für private Zwecke kauft, blende ich mit JavaScript einige nicht benötigte Felder wie den Firmennamen aus und entferne auch den Klassennamen validate-required
. Wenn er für ein Unternehmen einkauft, verstecke ich Vorname, Nachname usw. Dieser Code ist größer, aber ich denke, Sie verstehen es.
notNeededField.style.display = 'none';
notNeededField.classList.remove('validate-required');
Dies funktioniert jedoch nicht vollständig, da WooCommerce wahrscheinlich jedes Feld in PHP zusätzlich validiert. Auch nachdem ich als Privatperson zur Kasse gehen möchte, gibt mir Woocommerce immer noch die Nachricht, dass der Firmenname erforderlich ist.
Ist es möglich, die Validierung mit JavaScript im Handumdrehen ein- und auszuschalten, und wie? Alternativ, was wäre die beste Lösung? Vielleicht required
Parameter für diese Felder auf "false" setzen und nur benutzerdefinierte JavaScript-Validierung durchführen?
Lösung des Problems
Es gibt einige WooCommerce-Plugins, die diese Art von Hide/Show-Job verwalten können.
Dies hier ist ein Beispiel: https://wordpress.org/plugins/advanced-product-fields-for-woocommerce/
Keine Kommentare:
Kommentar veröffentlichen