【发布时间】:2015-11-29 13:10:42
【问题描述】:
我有一个运行 WooCommerce 插件的 Wordpress 网站。在结帐页面上,客户要求提供他们送货到的村庄的下拉列表,并要求对订单收取送货费。因此,订购商品的人会选择商品,去结账,输入他们的地址,从下拉菜单中选择他们的村庄,在该下拉菜单中订单总额将被更改,然后支付更改后的订单总额。
我目前的代码如下,仅将下拉框添加到订单中。所有这些代码都是从自定义插件文件中添加的。
add_filter( 'woocommerce_checkout_fields' , 'town_dropdown' );
add_action('woocommerce_checkout_process', 'check_if_town_set');
function town_dropdown($fields) {
$fields['billing']['town_dropdown'] = array(
'type' => 'select',
'class' => array('form-row-wide'),
'label' => '<div id="town-drop"><h2>Delivery Charge</h2><p>We deliver to the villages in the dropdown below. Please choose a village to have the correct price applied to your order.</p><br>',
'options' => array(
'0' => 'Please select a delivery charge',
'3.50-lin' => 'Linton - £3.50',
'5.00-abi' => 'Gt & Lt Abington - £5.00',
'6.00-bab' => 'Babraham - £6.00',
'5.00-bal' => 'Balsham - £5.00',
'5.00-bar' => 'Bartlow - £5.00',
'8.00-bri' => 'Brinkley - £8.00',
'8.00-bur' => 'Burrough Green - £8.00',
'8.00-cam' => 'Cambridge - £8.00',
'5.00-card' => 'Cardinals Green - £5.00',
'8.00-carl' => 'Carlton - £8.00',
'6.00-cas' => 'Castle Camps - £6.00',
'8.00-che' => 'Cherry Hinton - £8.00',
'6.00-dux' => 'Duxford - £6.00',
'8.00-ful' => 'Fulbourn - £8.00',
'5.00-had' => 'Hadstock - £5.00',
'8.00-hav' => 'Haverhill - £8.00',
'8.00-hel' => 'Helions Bumpstead - £8.00',
'8.00-hem' => 'Hempstead - £8.00',
'5.00-hil' => 'Hildersham - £5.00',
'8.00-hix' => 'Hinxton - £8.00',
'5.00-hor' => 'Horseheath - £5.00',
'8.00-ick' => 'Ickleton - £8.00',
'8.00-ked' => 'Kedington - £8.00',
'8.00-litb' => 'Littlebury - £8.00',
'6.00-litw' => 'LittleWalden - £6.00',
'6.00-rad' => 'Radwinter - £6.00',
'8.00-saf' => 'Saffron Walden - £8.00',
'8.00-sam' => 'Gt & Lt Sampford - £8.00',
'6.00-saw' => 'Sawston - £6.00',
'8.00-sew' => 'Sewards End - £8.00',
'8.00-she' => 'Shelfords - £8.00',
'8.00-ste' => 'Steeple Bumpstead - £8.00',
'6.00-str' => 'Streetly End - £6.00',
'8.00-thu' => 'Thurlow - £8.00',
'6.00-wwi' => 'West Wickham - £6.00',
'6.00-wwa' => 'West Wratting - £6.00',
'6.00-wco' => 'Weston Colville - £6.00',
'8.00-wgr' => 'Weston Green - £8.00',
'8.00-whi' => 'Whittlesford - £8.00',
'8.00-wil' => 'Gt & Lt Wilbraham - £8.00',
'6.00-wit' => 'Withersfield - £6.00',
'8.00-wra' => 'Gt & Lt Wratting - £8.00',
)
);
return $fields;
}
function check_if_town_set() {
if (!$_POST['town_dropdown'])
if ($_POST['town_dropdown'] == 0)
wc_add_notice( __('Please select a shipping charge'), 'error' );
}
总结一下,我的问题是:
1) 结账页面有更新结账总额的功能吗?
2) 我该如何调用这个函数?是否可以调用 select OnChange 事件?如果没有,我可以在运费框下方添加一个按钮来调用该功能吗?
请多问我一下,我确定我有什么问题,因为这是我第一次使用 Wordpress 插件 API - 感谢所有回复。
【问题讨论】:
-
你需要做两件事。 1) 创建一个 AJAX 函数来发送用户选择并处理更改购物车。 2)在JS中的body元素上触发'update_checkout',以便检索新的购物车成本
标签: php wordpress woocommerce