php - 使用 sprintf 为 WooCommerce 支付方式费用显示不同的文本标签
问题描述
这是基于根据用户角色向 WooCommerce 支付方式分配百分比费用。我想扩展它以在 sprintf 函数中的“卡费”标签之前显示另一个自定义描述。我想显示 $description 然后是“卡费”然后是(百分比费用)。
add_action('woocommerce_cart_calculate_fees', 'sm_credit_card_fee_role_gateway' );
function sm_credit_card_fee_role_gateway( $cart ){
if ( is_admin() && !defined('DOING_AJAX') )
return;
// Only on checkout page and logged in users
if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) || ! is_user_logged_in() )
return;
$wpuser_object = wp_get_current_user();
$allowed_roles = array('administrator', 'default_wholesaler', 'wholesaler-non-vat-registered', 'shop_manager');
if ( array_intersect($allowed_roles, $wpuser_object->roles) ){
$payment_method = WC()->session->get('chosen_payment_method');
if ( 'cardgatecreditcard' === $payment_method ){
$percentage = 8.25;
$description = 'Credit';
}
elseif ( 'cardgatesofortbanking' === $payment_method ){
$percentage = 6;
$description = 'SofortBanking';
}
elseif ( 'cardgategiropay' === $payment_method ){
$percentage = 3.15;
$description = 'GiroPay';
}
elseif ( 'cardgateideal' === $payment_method ){
$percentage = 2.1;
$description = 'iDeal';
}
}
if ( isset($percentage) ) {
$surcharge = ($cart->cart_contents_total + $cart->shipping_total) * $percentage / 100;
$cart->add_fee( sprintf( __(' $description Card Fee (%s)', 'woocommerce'), $percentage . '%' ), $surcharge, true );
}
}
解决方案
只需替换以下代码行:
$cart->add_fee( sprintf( __(' $description Card Fee (%s)', 'woocommerce'), $percentage . '%' ), $surcharge, true );
和:
$cart->add_fee( sprintf( __('%s Card Fee (%s)', 'woocommerce'), $description, $percentage . '%' ), $surcharge, true );
测试和工作
推荐阅读
- linux - conda.exe:加载共享库时出错:libz.so.1:无法从共享对象映射段
- php - 如何在我的视图中访问 Altorouter 实例
- java - 为什么 maven 不能将我的依赖项添加到 jar 中?
- matlab - 获取 Matlab 脚本中代码段的名称
- javascript - axios GET 请求不断运行
- vba - 表格单元格中的格式数字
- python - 如何在 Python 中以 8 位编码 16 位 WAV 文件?
- react-native - 尽管它确实进行了身份验证,但为什么放大给我这个错误?
- fstar - 试图理解索引类型
- python - 应该将 API 中的数据保存到数据库中,还是每次网站需要数据时调用 API