用户角色在Woocommerce中显示税收

时间:2015-04-15 12:15:44

标签: php wordpress woocommerce

我的任务是修改现有的B2C WooCommerce商店以启用B2B批发订单。到目前为止,用户角色编辑器和用户角色的WooCommerce价格的组合允许我设置批发价格并使商店运作。

我面临的问题是,现在我被告知批发价格需要在没有增值税的情况下显示,直到结账,但由于我们位于英国,消费者无法以这种方式显示价格,这意味着我需要比WooCommerce本身允许更细粒度的控制。

我注意到已经解决了在Role based taxes in woocommerce为用户角色设置税的问题,但我真正需要的是一段代码或一个插件,可以让我设置“在商店中显示价格” “在WooCommerce的标准税务面板中为一个用户角色排除税,但默认为其他人包含税。

这可能吗?

3 个答案:

答案 0 :(得分:8)

在我的functions.php中放置以下内容对我有用。如果角色是"零售商"我会覆盖WooCommerce选项以在商店和购物车中显示税。

add_filter('pre_option_woocommerce_tax_display_shop', 'override_tax_display_setting');
add_filter('pre_option_woocommerce_tax_display_cart', 'override_tax_display_setting');
function override_tax_display_setting() {
    if ( current_user_can('retailer') ) {
        return "excl";
    } else {
        return "incl";
    }
}

答案 1 :(得分:2)

来自@ hagbard_2605的解决方案对我有用,以下自定义插件正在使用WordPress 4.6和WooCommerce 2.2.3

<?php
/*
Plugin Name: My WooCommerce Prices Excluding Tax for Distributors
Plugin URI: https://www.pronamic.eu/
Description: Display WooCommerce prices exlcuding tax for distributors.
Author: Pronamic
Version: 1.0.0
Author URI: https://www.pronamic.eu/
*/

/**
 * Override WooCommerce tax display option for distributors.
 *
 * @see http://stackoverflow.com/questions/29649963/displaying-taxes-in-woocommerce-by-user-role
 * @see https://github.com/woothemes/woocommerce/blob/v2.2.3/includes/admin/settings/class-wc-settings-tax.php#L147-L158
 * @see https://github.com/woothemes/woocommerce/blob/v2.2.3/includes/admin/settings/class-wc-settings-tax.php#L166-L178
 * @see https://github.com/WordPress/WordPress/blob/4.6.1/wp-includes/option.php#L37-L52
 */
function my_override_woocommerce_tax_display( $value ) {
    if ( current_user_can( 'retailer' ) ) {
        return 'excl';
    }

    return $value;
}

add_filter( 'pre_option_woocommerce_tax_display_shop', 'my_override_woocommerce_tax_display' );
add_filter( 'pre_option_woocommerce_tax_display_cart', 'my_override_woocommerce_tax_display' );

WordPress pre_option_过滤器用于覆盖具有woocommerce_tax_display_shop角色/功能的用户的WooCommerce woocommerce_tax_display_cartretailer选项。

答案 2 :(得分:0)

我没有足够的观点对这里的答案发表评论,但@ hagbard_2605的答案无效。我甚至找不到他提到的过滤器。您可以找到'woocommerce_tax_setting'过滤器:https://github.com/woothemes/woocommerce/blob/5ef335b169ff4e19a4c5b393963a369446922b0c/includes/admin/settings/views/settings-tax.php#L7。也许那会奏效。