如果未选中复选框,WooCommerce会跳过结帐字段

时间:2018-11-12 11:47:43

标签: php wordpress woocommerce

在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

0 个答案:

没有答案