所以我正在研究http://www.lichtunie.nl 我们有一个正常运行的结帐页面,其中包含必填字段。 问题是这样的: 在荷兰(我们的所在地),我们有一个称为KvK的公司,如果您在这家公司成立,则需要在该公司注册并获得一个KvK号码。 我们可以通过网站检查这些数字,以查看它们是否合法以及其付款记录如何。
现在,我们可以选择“用支票付款”,让您在收到发票后的30天内订购并付款。 我们现在想要的是,当某人在结帐时不填写其KvK编号字段时,就不能使用这种付款方式。
他们一旦填写了“ KvK号”字段,便应该可以。
我已经寻找了一段时间,只是不知道该怎么做。任何提示吗?
预先感谢
Lex
答案 0 :(得分:1)
如果帐单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 ) {
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;
};
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
添加
如果还没有填写“ 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 ) { 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; }
它应该正常工作(未经测试)。
答案 1 :(得分:0)
尝试使用此代码创建活动主题自定义js文件
$( "#KvK_number" ).change(function() { //Here assign the KvK number ID
if (this.val() == "") {
$('#paying_with_cheque').hide(); /// Here give the Check payment div id
}
else
{
$('#paying_with_cheque').show();
}
});