我有一个坚韧的时间试图发送静态值的woocommerce地址字段,当一个特定的运输方式被选中。我隐藏字段,但我仍然需要他们发送静态数据,或在本例中的航运提货点地址。
基本上,我想发送静态字段值的地址时,客户选择一个皮卡点作为一种运输方法,所以他/她不需要插入任何额外的信息比需要。
我想使用这个代码与这个自定义代码-这隐藏了某些航运方式的字段。
<?php
add_filter( 'woocommerce_checkout_fields', 'remove_billing_checkout_fields' );
function remove_billing_checkout_fields( $fields ) {
// change below for the method
$shipping_method ='itella_pp';
// change below for the list of fields
$hide_fields = array( 'billing_address_1', 'billing_address_2', 'billing_city', 'billing_state', 'billing_postcode', 'billing_company' );
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
// uncomment below line and reload checkout page to check current $chosen_methods
// print_r($chosen_methods);
$chosen_shipping = $chosen_methods[0];
foreach($hide_fields as $field ) {
if ($chosen_shipping == $shipping_method) {
$fields['billing'][$field]['required'] = false;
$fields['billing'][$field]['class'][] = 'hide';
}
$fields['billing'][$field]['class'][] = 'billing-dynamic';
}
return $fields;
}
add_action( 'wp_footer', 'cart_update_script', 999 );
function cart_update_script() {
if (is_checkout()) :
?>
<style>
.hide {visibility: hidden!important;}
</style>
<script>
jQuery( function( $ ) {
// woocommerce_params is required to continue, ensure the object exists
if ( typeof woocommerce_params === 'undefined' ) {
return false;
}
$(document).on( 'change', '#shipping_method input[type="radio"]', function() {
$('.billing-dynamic').toggleClass('hide', this.value == 'itella_pp');
});
});
</script>
<?php
endif;
}
?>
这是我到目前为止发送静态值的代码。我计划使用wordpress add_filter。所以基本上如果选择了提货点发货方式,我需要硬编码地址字段的值。应该是这样的吗?
add_filter( 'woocommerce_checkout_fields', 'send_static_values' );
function send_static_values ($fields) {
$shipping_method ='itella_pp';
global $woocommerce;
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if ($chosen_shipping == $shipping_method) {
$fields['billing_address_1']['value'] = 'Something 15';
$fields['billing_city']['value'] = 'Something12';
$fields['billing_state']['value'] = 'Something';
$fields['billing_postcode']['value'] = '124712';
$fields['billing_company']['value'] = 'Something Ltd';
}
return $fields;
}
任何帮助/想法都很感激!
1条答案
按热度按时间kgsdhlau1#
我自己找到了这个问题的答案。所以要做到这一点,你只需要使用add_filter来改变值,然后输出它们。
使用此代码可以实现所需的解决方案。
如果您想添加其他字段,只需找出字段的名称,然后像添加其他字段一样添加它。“默认”只是意味着,它是字段的默认值。如果字段之前被隐藏,那么它会以任何方式发送值。