【发布时间】:2021-06-24 19:47:04
【问题描述】:
我有什么?
显示在将商品添加到购物车之前要填写的海关字段的单个产品页面。我添加了一个按钮,该按钮应将自定义字段中的所有值放在一个文本文件中并保存它而无需重新加载页面。
我的代码是什么?
在 simple.php 中
<input type="submit" id="ajax-order-btn" class="button" value="Place Order via AJAX" />
在functions.php中
<?php
add_action('wp_head', 'ajax_call_place_order');
function ajax_call_place_order() {
if ( is_product() ){
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
$(document).on("click", "#ajax-order-btn" ,function(e) {
e.preventDefault();
var data = {
'action': 'ajax_order',
};
$.post('<?php echo esc_url( home_url() ); ?>/wp-admin/admin-ajax.php', data);
});
});
</script>
<?php
}
}
add_action('wp_ajax_ajax_order', 'ajax_order_callback_wp');
add_action( 'wp_ajax_nopriv_ajax_order', 'ajax_order_callback_wp' );
function ajax_order_callback_wp() {
$custom_fields_value = ***What Should Go Here***
file_put_contents(wp_upload_dir()['basedir'].'/orders/AJAX_TEST.txt', $custom_fields_value);
}
?>
【问题讨论】:
-
那么,您正尝试将值从 WooCommerce 表单发送到您的
ajax_order_callback_wp函数,但您不知道该怎么做,对吗? -
是的,没错,你知道吗?
-
当然可以,但我需要更多来帮助您。您需要能够选择
<form>元素才能从表单中获取数据。您能否在问题中包含该元素? -
我想这就是你的意思。
<form class="cart" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data'>
标签: javascript php ajax woocommerce