我想在woocommerce中添加一个操作,以便在后端创建时从订单中删除税,并将特殊用户作为客户。
此代码适用于网站上的正常订单处理,但不适用于后端
add_action( 'woocommerce_checkout_update_order_review', 'remove_tax_from_user' );
add_action( 'woocommerce_before_cart_contents', 'remove_tax_from_user' );
function remove_tax_from_user( $post_data ) {
global $woocommerce;
$username = $woocommerce->customer->get_username();
$user = get_user_by('login',$username);
if($user)
{
if( get_field('steuer_befreit', "user_{$user->ID}") ):
$woocommerce->customer->set_is_vat_exempt( true );
endif;
}
}
在后端客户需要在点击“添加订单”之前“免除增值税”。
您可以尝试使用在订单数据保存在后端之前触发的钩子save_post_shop_order
,这样:
add_action( 'save_post_shop_order', 'backend_remove_tax_from_user', 50, 3 );
function backend_remove_tax_from_user( $post_id, $post, $update ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return $post_id; // Exit if it's an autosave
if ( $post->post_status != 'publish' )
return $post_id; // Exit if not 'publish' post status
if ( ! current_user_can( 'edit_order', $post_id ) )
return $post_id; // Exit if user is not allowed
if( ! isset($_POST['customer_user']) ) return $post_id; // Exit
if( $_POST['customer_user'] > 0 ){
$customer_id = intval($_POST['customer_user']);
if( get_field('steuer_befreit', "user_{$customer_id}") ){
$wc_customer = new WC_Customer( $customer_id );
$wc_customer->set_is_vat_exempt( true );
}
}
}
代码位于活动子主题(或主题)的function.php文件中。
但这不起作用,你将无法使用任何现有的钩子来完成这项工作。唯一的方法是让第一个客户免除增值税,然后你可以为这个客户添加订单。