[英]Make order notes required for specific product categories in WooCommerce checkout
[英]Make Order notes field required only when it is not hidden in Woocommerce checkout
在Woocommerce結帳頁面中,當選中或取消選中“發送到不同地址”復選框時,我已設法顯示或隱藏“訂單備注”字段,使用“ 根據Woocommerce結帳中的復選框顯示隱藏訂單備注字段 ”答案代碼我的一個問題。
我希望“訂單備注”字段只有在可見時才需要。
當可見(未隱藏)並啟用驗證時,如何將此“訂單備注”字段設為必填項 ?
歡迎任何幫助。
以下代碼僅在未隱藏時才需要“訂單備注”字段,並在此情況下啟用字段驗證。
注意 (強制性) :“訂單備注”字段必須是可選的 (就像在默認的Woocommerce中一樣),否則代碼將無法正常工作。
完整的代碼:
// Remove "(optional)" label on "Order notes" field
add_filter( 'woocommerce_form_field' , 'remove_order_comments_optional_fields_label', 10, 4 );
function remove_order_comments_optional_fields_label( $field, $key, $args, $value ) {
// Only on checkout page for Order notes field
if( 'order_comments' === $key && is_checkout() ) {
$optional = ' <span class="optional">(' . esc_html__( 'optional', 'woocommerce' ) . ')</span>';
$field = str_replace( $optional, '', $field );
}
return $field;
}
// The jQuery script that show hide "Order notes" field
add_action( 'woocommerce_after_order_notes', 'custom_checkout_scripts_js_script', 10, 1 );
function custom_checkout_scripts_js_script( $checkout ) {
$required = esc_html__( 'required', 'woocommerce' );
?>
<script type="text/javascript">
(function($){
var required = '<abbr class="required" title="<?php echo $required; ?>">*</abbr>',
notesField = '#order_comments_field',
shipCheckbox = '#ship-to-different-address-checkbox';
function actionRequire( actionToDo='yes', selector='' ){
if ( actionToDo == 'yes' ) {
$(selector).addClass("validate-required");
$(selector+' label').append(required);
} else {
$(selector).removeClass("validate-required");
$(selector+' label > .required').remove();
}
$(selector).removeClass("woocommerce-validated");
$(selector).removeClass("woocommerce-invalid woocommerce-invalid-required-field");
}
// On load and on form change
$('form.checkout').on( 'change', shipCheckbox, function(){
if( $(this).prop('checked') === true ) {
$(notesField).hide(); // Show
actionRequire( 'no' ,notesField );
} else {
$(notesField).show(); // Hide
actionRequire( 'yes' ,notesField );
}
});
})(jQuery);
</script>
<?php
}
// "Order notes" field validation
add_action('woocommerce_checkout_process', 'order_comments_field_validation');
function order_comments_field_validation() {
if ( isset($_POST['order_comments']) && empty($_POST['ship_to_different_address']) )
wc_add_notice( __( 'Please fill in "Order notes" required field.' ), 'error' );
}
代碼在您的活動子主題(或活動主題)的function.php文件中。 經過測試和工作。
類似: 根據運輸國家/地區選擇Woocommerce結帳電話字段
相關: 根據Woocommerce結帳中的復選框顯示隱藏訂單備注字段
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.