WooCommerce пропустить поля проверки, если флажок не установлен - PullRequest
0 голосов
/ 12 ноября 2018

В форме оформления заказа 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();
  }
});

PHP для удаления полей billing_company и billing_company_vat из мета-заказа, если флажок не установлен:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...