您好,我正在使用虚拟产品页面中工作,我需要这样做
所以我想这样做,我想有一个名为“Personal”的复选框,所以当单击“hide right way the company name Address”等时,我还想加税19%,当没有加税时,单击“add tax zero”
我已经使用了这个代码,我不知道如何为我的复选框获取值,所以当它为真时,我会加19%的税,并隐藏公司、地址、电话等名称,当它为假时,税为零
还有一个想法是,我如何获得选择国家,并检查是否在欧洲,以及我如何获得该值
编辑:如果可能,仅当国家i\'t不在欧洲时才添加复选框,
谁能帮我一下吗,谢谢
我附上一些图片以便更好地理解
检查时http://i.imgur.com/jwH2i2L.png
如果不是http://i.imgur.com/zyB9elJ.png
/**
* Add checkbox field to the checkout
**/
add_action(\'woocommerce_after_order_notes\', \'my_custom_checkout_field\');
function my_custom_checkout_field( $checkout ) {
woocommerce_form_field( \'my_checkbox\', array(
\'type\' => \'checkbox\',
\'class\' => array(\'input-checkbox\'),
\'label\' => __(\'Personal\'),
\'required\' => false,
), $checkout->get_value( \'my_checkbox\' ));
}
/**
* Process the checkout
**/
add_action(\'woocommerce_checkout_process\', \'my_custom_checkout_field_process\');
function my_custom_checkout_field_process() {
global $woocommerce;
// Check if set, if its not set add an error.
if (!$_POST[\'my_checkbox\'])
{
$woocommerce->add_error( __(\'Please agree to my checkbox.\') );
}
}
/**
* Update the order meta with field value
**/
add_action(\'woocommerce_checkout_update_order_meta\', \'my_custom_checkout_field_update_order_meta\');
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ($_POST[\'my_checkbox\']) update_post_meta( $order_id, \'My Checkbox\', esc_attr($_POST[\'my_checkbox\']));
/**
* Make Tax Zero When it\'s my_checkbox False dosen\'t work again :(
**/
add_filter( \'woocommerce_product_tax_class\', \'wc_diff_rate_for_user\', 1, 2 );
function wc_diff_rate_for_user( $tax_class, $product ) {
if (!$_POST[\'my_checkbox\']) {
$tax_class = \'Zero Rate\';
}
return $tax_class;
}
/**
* hide filters when checkbox my_checkbox it\'s True dosen\'t work again :(
**/
add_filter( \'woocommerce_checkout_fields\' , \'woo_remove_billing_checkout_fields\' );
function woo_remove_billing_checkout_fields( $fields ) {
if($_POST[\'my_checkbox\']) {
unset($fields[\'billing\'][\'billing_company\']);
unset($fields[\'billing\'][\'billing_address_1\']);
unset($fields[\'billing\'][\'billing_address_2\']);
unset($fields[\'billing\'][\'billing_city\']);
unset($fields[\'billing\'][\'billing_postcode\']);
unset($fields[\'billing\'][\'billing_country\']);
unset($fields[\'billing\'][\'billing_state\']);
unset($fields[\'billing\'][\'billing_phone\']);
unset($fields[\'order\'][\'order_comments\']);
unset($fields[\'billing\'][\'billing_address_2\']);
unset($fields[\'billing\'][\'billing_postcode\']);
unset($fields[\'billing\'][\'billing_company\']);
unset($fields[\'billing\'][\'billing_city\']);
}
return $fields;
}
}
最合适的回答,由SO网友:LoicTheAztec 整理而成
CLARIFICATION FOR ALL :
您在商店中使用虚拟产品。
在…上checkout page, 您已创建并设置additional checkbox 对于european VAT 意图
有3个案例与此复选框相关
复选框隐藏(默认)当所选国家为欧洲国家时,复选框可见:
- 复选框禁用(默认)=>将增值税值设置为“0”(不应用增值税)
- 复选框已启用:
- 增值税正常应用
- 隐藏(取消设置)账单明细中除电子邮件字段和国家/地区选择器以外的所有字段
WHAT IS NOT WORKING
您的php函数与复选框检测状态相关,因为您使用
$_POST[\'my_checkbox\']
但您没有发布(提交)任何内容,您只有表单项的启用/禁用状态。
WHAT DO YOU NEED TO DO (not done yet) :
<定义欧洲国家=>可见复选框状态您需要使用javascript/jQuery
.select()
javascript和wordpress中用于检测和Ajax的窗体事件
阅读本文:
5 TIPS FOR USING AJAX IN WORDPRESS. 您可以搜索并找到许多与
wordpress ajax 和
form element detection state 通过此论坛线程