Я пытаюсь создать магазин woocommerce, чтобы пользователи, имеющие роль оптовика или дизайнера, автоматически освобождались от уплаты налогов и просто уходили с налога из корзины / выписки. Я использовал плагин динамического ценообразования, чтобы предлагать разные цены для разных ролей, но нет вариантов изменения налогов.
Кто-то разместил этот код:
// Place the following code in your theme's functions.php file and replace tax_exempt_role with the name of the role to apply to add_action( 'init', 'woocommerce_customer_tax_exempt' ); function woocommerce_customer_tax_exempt() { global $woocommerce; if ( is_user_logged_in() ) { $tax_exempt = current_user_can( 'tax_exempt_role'); $woocommerce->customer->set_is_vat_exempt( $tax_exempt ); } }
Кажется, что он работает на передней панели, но разбивает сервер. после добавления его в functions.php, когда я вернусь в область администрирования и увижу это: http://img.ruphp.com/php/nNHMSAZ.png (это только новая страница с ошибками Chrome)?
Другая вещь, которую я не мог понять, состоит в том, как добавить 2 роли вместо одного.
благодаря
Следующее работало для меня для роли пользователя «оптовый продавец». Добавлено в functions.php.
add_filter( 'woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes' ); function prevent_wholesaler_taxes() { global $woocommerce; if( current_user_can('wholesaler')) { $woocommerce->customer->set_is_vat_exempt(true); } else { $woocommerce->customer->set_is_vat_exempt(false); } } //end prevent_wholesaler_taxes
наadd_filter( 'woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes' ); function prevent_wholesaler_taxes() { global $woocommerce; if( current_user_can('wholesaler')) { $woocommerce->customer->set_is_vat_exempt(true); } else { $woocommerce->customer->set_is_vat_exempt(false); } } //end prevent_wholesaler_taxes
наadd_filter( 'woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes' ); function prevent_wholesaler_taxes() { global $woocommerce; if( current_user_can('wholesaler')) { $woocommerce->customer->set_is_vat_exempt(true); } else { $woocommerce->customer->set_is_vat_exempt(false); } } //end prevent_wholesaler_taxes
Чтобы добавить несколько пользовательских ролей, просто добавьте в current_user_can();
функция. Я думаю, что это может сработать:
if( current_user_can('wholesaler')||current_user_can('another_user_role') )
Я заметил, что при использовании «woocommerce_before_checkout_billing_form» сначала необходимо обновить или обновить страницу проверки, тогда вам нужно обновить страницу корзины, чтобы она вступила в силу.
Используйте эти крючки действий, «woocommerce_before_cart_contents» и «woocommerce_before_shipping_calculator», чтобы освобождение от уплаты налогов вступало в силу без предварительного обновления страницы проверки.
Примечание: используйте один и тот же код функции обратного вызова, как указано выше.