我有一个使用以下代码创建的自定义结帐字段:
add_action( 'woocommerce_before_order_notes', 'add_custom_checkout_field' );
function add_custom_checkout_field( $checkout ){
woocommerce_form_field( 'number_id', array(
'type' => 'number',
'class' => array( 'form-row-wide' ),
'label' => 'Amount',
'placeholder' => 'Place your number here',
'required' => false,
), $checkout->get_value( 'number_id' ) );
}
我希望此字段显示在放置订单按钮之前的空间中。我尝试执行以下操作,但没有成功:
add_action( 'woocommerce_review_order_before_submit', 'review_order_before_submit_state_message' );
function review_order_before_submit_state_message() {
$amount = WC()->session->get('number_id');
$message = "Amount you entered is: <strong>".$amount;
echo '<ul class="woocommerce-info">'.$message.'</ul>';
}
这个数量也可以根据客户的输入而改变,所以也尝试了 javascript,但购物车没有刷新:
add_action( 'wp_footer', 'bbloomer_checkout_radio_choice_refresh' );
function bbloomer_checkout_radio_choice_refresh() {
if ( ! is_checkout() ) return;
?>
<script type="text/javascript">
jQuery( function($){
$('form.checkout').on('change', 'input[name=number_id]', function(e){
e.preventDefault();
var p = $(this).val();
$.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: {
'action': 'woo_get_ajax_data',
'radio': p,
},
success: function (result) {
$('body').trigger('update_checkout');
}
});
});
});
</script>
<?php
}
// WP Ajax Function
add_action( 'wp_ajax_woo_get_ajax_data', 'woo_get_ajax_data' );
add_action( 'wp_ajax_nopriv_woo_get_ajax_data', 'woo_get_ajax_data' );
function woo_get_ajax_data() {
if ( isset($_POST['number_id']) ){
$number_id = sanitize_key( $_POST['number_id'] );
WC()->session->set('number_id', $number_id );
echo json_encode( $number_id );
}
die();
}
谁能告诉我我做错了什么?谢谢你。
饮歌长啸