ajax - 动态删除购物车费用 Woocommerce
问题描述
我有一个使用 Woocommerce 插件的 WordPress 商店。我目前可以使用$woocommerce->cart->add_fee()
分配给woocommerce_cart_calculate_fees
挂钩的功能在结帐时动态添加费用。但是,我也希望能够在结帐时取消费用,但我还没有成功。我试图通过 AJAX 触发 PHP 函数,然后使用此方法清除费用。
当我从 clearfees() 函数中简单地回显“成功”时,AJAX 调用成功完成。但是,当我尝试调用 $WC()->cart->remove_all_fees() AJAX 失败并出现 500 错误。
从 Javascript 中删除费用 AJAX 调用
function clear_fees() {
$.ajax({
type: 'GET',
url: entrada_params.admin_ajax_url,
data: { action : 'clear_fees' }
}).done( function( data ) {
console.log(data);
} )
.fail( function( jqXHR, textStatus, errorThrown ) { // HTTP Error
console.error( errorThrown );
} );
}
我主题的functions.php中的clearfees函数
function clearfees() {
$WC()->cart->remove_all_fees();
wp_die();
}
// creating Ajax call for WordPress
add_action('wp_ajax_clear_fees', 'clearfees');
add_action('wp_ajax_nopriv_clear_fees', 'clearfees');
在我的搜索中,我在实践中发现关于 remove_all_fees() 函数的信息非常少,但如果我能让它工作,它似乎是合乎逻辑的解决方案。
解决方案
我这样做是因为我在 function.php 中申请费用
add_action( 'woocommerce_cart_calculate_fees', 'custom_fee_based_on_cart_total', 10, 1 );
function custom_fee_based_on_cart_total( $cart_object ) {
if(isset($_GET['implementation'])){
$charges = (int)$_GET['charges'];
$cart_total = (int)$cart_object->cart_contents_total;
$fees = $cart_total + $charges;
$applyfee = $_SESSION['applyfee'] ? $_SESSION['applyfee'] : 'true';
if($applyfee == 'true'){
$cart_object->add_fee( __( "Implementation Charges", "woocommerce" ), $charges, false );
}else{
$charges = 0;
$cart_object->add_fee( __( "Implementation Charges", "woocommerce" ), $charges, false );
}
}
}
如果我选择删除费用选项
function clearfees() {
$_SESSION['applyfee'] = 'false';
}
// creating Ajax call for WordPress
add_action('wp_ajax_clear_fees', 'clearfees');
add_action('wp_ajax_nopriv_clear_fees', 'clearfees');
最后刷新购物车页面,因为我得到了成功响应。
推荐阅读
- javascript - 使用 Angular 相对于另一个元素动态定位一个元素
- javascript - 从Javascript中的对象数组中过滤未定义
- php - 在 CakePHP 中显示 FK 数据的问题
- firebase - 如何将图像上传到 Firebase 存储并将图像 url 保存到 Firebase 数据库以在颤振中使用它
- nestjs - 如何在变量中注入一些东西?
- javascript - React - 遍历 React.element 数组不起作用
- javascript - 成功调用后无法事件单击 SVG 元素
- javascript - Ant 设计表单问题
- javascript - 谷歌日历 - 事件日期,而不是一审日期
- javascript - 如何在 Chrome 移动设备的大表中加快 ContentEditable td 输入速度