在WooCommerce结帐表格中,我有一个复选框供愿意购买公司的客户使用。如果选中此复选框-两个字段通过js显示-默认为billing_company
和自定义billing_company_vat
。我要存档的内容是,如果未选中此复选框,那么这两个字段将不会保存在订单元中。
用于显示/隐藏结帐字段的JS:
// checking if checkbox is checked on page load
if (!jQuery('body #checkbox_trigger').is(":checked")) {
jQuery('body #billing_company_field, body #billing_company_vat_field').hide();
}
// show/hide on checkbox check
jQuery('body #checkbox_trigger').change(function() {
if(jQuery(this).is(":checked")) {
jQuery('body #billing_company_field, body #billing_company_vat_field').show();
}
else {
jQuery('body #billing_company_field, body #billing_company_vat_field').hide();
}
});
如果未选中复选框,则用于从订单元中删除billing_company和billing_company_vat字段的PHP:
add_action( 'woocommerce_checkout_update_order_meta', 'checkout_company_fields', 10, 2 );
function checkout_company_fields( $order_id, $posted ) {
if (isset($posted['checkbox_trigger']) && !$posted['checkbox_trigger']) {
delete_post_meta($order_id, '_billing_company');
delete_post_meta($order_id, '_shipping_company');
delete_post_meta($order_id, '_billing_company_vat');
}
}
这可以正常工作并满足我的需要,但是我有种感觉,这是某种错误,不应该这样处理-我猜所有结帐字段数据都已发送到付款网关,并且仅在以后从订单元中删除结帐完成时。我认为在将数据发送到支付网关(PayPal等)之前,应该对这两个字段进行“取消设置”。
有时付款网关还会出现致命错误,不确定是否与之相关。
[12-Nov-2018 10:49:14 UTC] PHP Fatal error: Uncaught Error: Call to a member function get_total() on boolean in /localhost/wp-content/plugins/woo-payment-gateway/includes/class-wc-gateway.php:321