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