gpt4 book ai didi

php - 自定义结账字段启用或禁用 Woocommerce 3 中的付款方式

转载 作者:行者123 更新时间:2023-12-01 04:36:28 25 4
gpt4 key购买 nike

所以我正在研究 http://www.lichtunie.nl我们有一个功能齐全的结账页面,其中包含所需的字段。问题是这样的:在荷兰(我们的总部所在地),我们有一个叫做 KvK 的东西,如果您创办一家公司,您需要在那里注册并获得一个 KvK 号码。我们可以通过网站检查这些号码,看看它们是否合法以及它们的付款历史记录如何。

现在我们可以选择“用支票付款”,您可以在收到发票后 30 天内订购并付款。我们现在想要的是,当有人在结账时未填写 KvK 号码字段时,他们就无法使用这种付款方式。

一旦他们填写了“KvK 号码”字段,他们就应该可以了。

我已经找了一段时间了,只是不知道如何做到这一点。有人有任何提示吗?

提前致谢,

莱克斯

最佳答案

如果帐单 KVK 号码结帐字段已填写或存在,以下代码将仅保留“支票”付款方式:

add_filter( 'woocommerce_available_payment_gateways', 'kvk_field_cheque_payment_method', 20, 1);
function kvk_field_cheque_payment_method( $gateways ){
foreach( $gateways as $gateway_id => $gateway ) {
// Not in backend (admin)
if( is_admin() )
return $gateways;

if( WC()->session->get( 'is_kvk_nummer' ) && $gateway_id != 'cheque' ){
unset( $gateways[$gateway_id] );
}
}
return $gateways;
}

// The Wordpress Ajax PHP receiver
add_action( 'wp_ajax_kvk_nummer', 'get_ajax_kvk_nummer' );
add_action( 'wp_ajax_nopriv_kvk_nummer', 'get_ajax_kvk_nummer' );
function get_ajax_kvk_nummer() {
if ( $_POST['bkvkn'] == '1' ){
WC()->session->set('is_kvk_nummer', '1');
} else {
WC()->session->set('is_kvk_nummer', '0');
}
die();
}

// The jQuery Ajax request
add_action( 'wp_footer', 'checkout_kvk_fields_script' );
function checkout_kvk_fields_script() {
// Only checkout page
if( is_checkout() && ! is_wc_endpoint_url() ):

// Remove "is_kvk_nummer" custom WC session on load
if( WC()->session->get('is_kvk_nummer') ){
WC()->session->__unset('is_kvk_nummer');
}
?>
<script type="text/javascript">
jQuery( function($){
var a = 'input#billing_kvk_nummer';

// Ajax function
function checkKvkNummer( value ){
$.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: {
'action': 'kvk_nummer',
'bkvkn': value != '' ? 1 : 0,
},
success: function (result) {
$('body').trigger('update_checkout');
}
});
}

// On start
checkKvkNummer($(a).val());

// On change event
$(a).change( function () {
checkKvkNummer($(this).val());
});
});
</script>
<?php
endif;
};

代码位于事件子主题(或事件主题)的functions.php 文件中。经过测试并有效。

Addition
Also to hide "cheque" payment method if billing KVK number checkout field is not filled, replace the first function with this one:

add_filter( 'woocommerce_available_payment_gateways', 'kvk_field_cheque_payment_method', 20, 1);
function kvk_field_cheque_payment_method( $gateways ){
// Not in backend (admin)
if( is_admin() )
return $gateways;

foreach( $gateways as $gateway_id => $gateway ) {

if( $gateway_id != 'cheque' && WC()->session->get( 'is_kvk_nummer' ) ){
unset( $gateways[$gateway_id] );
} elseif( $gateway_id == 'cheque' && ! WC()->session->get( 'is_kvk_nummer' ) ){
unset( $gateways[$gateway_id] );
}
}
return $gateways;
}

它应该可以工作(未经测试)

关于php - 自定义结账字段启用或禁用 Woocommerce 3 中的付款方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com