woocommerce - 根据地址字段更新运费
Posted
技术标签:
【中文标题】woocommerce - 根据地址字段更新运费【英文标题】:woocommerce - update shipping rate based on address field 【发布时间】:2017-02-27 12:43:34 【问题描述】:我拥有一家餐厅,我正在为其开发一个在线订餐网站。我正在为网站使用 woocommerce。
由于我们只能向城市内的有限区域送货,我已将地址行 2 自定义为一个下拉列表,其中包含我们可送货的区域。
我已经做了这么多。
现在我需要的是,根据从下拉列表中选择的区域更新运费。
我对 wordpress 和 php 非常陌生,因此非常感谢您详细解释的答案。
提前致谢
编辑:
我做了一些研究,找到了一种更新运费的方法
add_action( 'woocommerce_flat_rate_shipping_add_rate','add_another_custom_flat_rate', 10, 2 );
function add_another_custom_flat_rate( $method, $rate )
$new_rate = $rate;
$new_rate['cost'] = 50; // Update the cost to 50
$method->add_rate( $new_rate );
但我仍然不知道如何在此函数中获取区域名称,我尝试使用 $fields['billing']['billing_address_2']
来引用它,但这不起作用。
如果有人能帮我在该函数中获取地址行 2,那将非常有帮助。
TIA
编辑 2: 我已经根据我的需要修改了一个代码,现在,我没有使用 DB 来获取下拉值,而只是对它们进行硬编码。由于这是 wordpress,这些字段已经存在,我只能使用它们。下面是我正在使用的稍微修改过的 jQuery,我将它保存在我的子主题中作为 updateshipping.js:
<script>
$("#billing_address_2").change(function ()
/* ajax function */
var area = $("#billing_address_2").val();
$.ajax(
url: 'functions.php',
method: 'POST',
data: field1: area ,
contentType: 'application/json; charset=UTF-8',
success: function (response)
alert(response.status);
$("#order_review").val(response);
,
);
</script>
billing_address_2
是<select>
id
order_review
是我需要刷新的div id
我也在functions.php中排队js,如下所示:
add_action( 'wp_enqueue_scripts', 'update_shipping' );
function update_shipping()
wp_register_script( 'updateshipping', get_stylesheet_directory_uri(). '/updateshipping.js',array('jquery') );
wp_enqueue_script( 'updateshipping' );
目前,我在上面给出的 add_another_custom_flat_rate 函数中添加了这一行:
$area = $_REQUEST['area'];
echo $area;
但由于某种原因,该区域没有被获取。是不是我做错了什么?
请帮忙, 提前致谢
【问题讨论】:
可能使用内置的shipping zones 问题是,内置的运输区域只使用对我没有太大帮助的 PIN 码 【参考方案1】:您可以使用 ajax/javascript 来解决您的问题,
-
创建您的 php 文件,
<select id = "address_cmbo" value =''>
<option>query out the values from your database </option>
</select>
<input type="text" value = "" id="cost_textbox" >
-
使用 javascript/jquery 创建函数,
$("#address_cmbo").change(function ()
/* ajax function */
var address = $("#address_cmbo").val();
$.ajax(
url: 'functions.php',
type: 'POST',
data: field1: address ,
contentType: 'application/json; charset=utf-8',
success: function (response)
alert(response.status);
$("#cost_textbox").val(response);
,
);
$address_value = $_REQUEST['address'];
$query = "Select cost from tbl_address ";
$result = mysql_query($query);
while( -> mysql_fetch_array)
--- display the actual cost from the result
$cost = $rows['cost'];
-
您的文本框的值现在将根据所选地址而改变。
【讨论】:
您好,谢谢您的帮助,但我仍然没有得到输出,我可能做错了什么,我已经根据进度对问题进行了编辑。可以的话请帮忙,谢谢以上是关于woocommerce - 根据地址字段更新运费的主要内容,如果未能解决你的问题,请参考以下文章