php - 根据 Woocommerce 中选择的运输方式显示隐藏付款方式
问题描述
当我在灵活的运输插件表单 wpdesk 中选择指定的“运输方式”时,我想隐藏一些付款方式并启用另一种付款方式。
我已经尝试过该代码:
add_filter( 'woocommerce_available_payment_gateways', 'gateway_disable_shipping_326' );
function gateway_disable_shipping_326( $available_gateways ) {
global $woocommerce;
if ( !is_admin() ) {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ( isset( $available_gateways['payment_method_cod'] ) && 0 === strpos( $chosen_shipping, 'flat_rate:6' ) ) {
unset( $available_gateways['payment_method_cod'] );
}
}
return $available_gateways;
}
和这个
function my_custom_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
if ( in_array( 'flat_rate:6', $chosen_shipping_rates ) ) :
unset( $gateways['payment_method_cod'] );
endif;
if ( in_array( 'flat_rate:8', $chosen_shipping_rates ) ) :
unset( $gateways['payment_method_przelewy24'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'my_custom_available_payment_gateways' );
我的网站链接:[www.dajati.pl][1]
解决方案
以下代码示例将根据选择的运输方式启用/禁用支付网关。
在此示例中,我们有 3 种运输方式和 3 个支付网关。每种选择的运输方式将只启用一个不同的支付网关。
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateways_based_on_chosen_shipping_method' );
function payment_gateways_based_on_chosen_shipping_method( $available_gateways ) {
// Not in backend (admin) and Not in order pay page
if( is_admin() || is_wc_endpoint_url('order-pay') )
return $available_gateways;
// Get chosen shipping methods
$chosen_shipping_methods = (array) WC()->session->get( 'chosen_shipping_methods' );
if ( in_array( 'flat_rate:12', $chosen_shipping_methods ) )
{
unset( $gateways['bacs'] );
unset( $gateways['cod'] );
}
elseif ( in_array( 'flat_rate:14', $chosen_shipping_methods ) )
{
unset( $gateways['bacs'] );
unset( $gateways['paypal'] );
}
elseif ( in_array( 'free_shipping:10', $chosen_shipping_methods ) )
{
unset( $gateways['cod'] );
unset( $gateways['paypal'] );
}
return $gateways;
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。测试和工作。
为了能够获得正确的运输方式 ID,您可以使用浏览器检查器,这样:
推荐阅读
- android - 未解决的参考:在 gradle 中添加必要的工具并更新到 kotlin 最新版本后进行 Parcelize
- c++ - 示例 Shell 应用程序显示的 V8“分段错误(核心转储)”错误
- java - REST API:URL 中的 JSON 对象以获取自定义 JSON
- akka - 类型为 2.6.3 的 akka 的日志记录问题
- python - 为什么我需要一个“返回”和一个新变量?
- ios - Fabric crashlytics 显示错误:致命异常:NSInternalInconsistencyException。在 IOS 应用程序中
- r - 如何从因子存储中提取特定值作为数据框中的列值
- kubernetes - kubelet 错误:更新节点租约失败
- javascript - XMLHttpRequest | 手动发送请求会得到 2111 个字符的响应,但使用 XMLHttpRequest 响应的长度为 179
- python-3.x - SyntaxError:python套接字编程中listen()的语法无效