163 lines
5.0 KiB
PHP
163 lines
5.0 KiB
PHP
<?php
|
|
/**
|
|
* Booster for WooCommerce - Module - Tax Display
|
|
*
|
|
* @version 3.2.4
|
|
* @since 3.2.4
|
|
* @author Algoritmika Ltd.
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) exit;
|
|
|
|
if ( ! class_exists( 'WCJ_Tax_Display' ) ) :
|
|
|
|
class WCJ_Tax_Display extends WCJ_Module {
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @version 3.2.4
|
|
* @since 3.2.4
|
|
*/
|
|
function __construct() {
|
|
|
|
$this->id = 'tax_display';
|
|
$this->short_desc = __( 'Tax Display', 'woocommerce-jetpack' );
|
|
$this->desc = __( 'Customize WooCommerce tax display.', 'woocommerce-jetpack' );
|
|
$this->link_slug = 'woocommerce-tax-display';
|
|
parent::__construct();
|
|
|
|
if ( $this->is_enabled() ) {
|
|
|
|
// Tax Incl./Excl. by product/category
|
|
if ( 'yes' === get_option( 'wcj_product_listings_display_taxes_by_products_enabled', 'no' ) ) {
|
|
add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_by_product' ), PHP_INT_MAX );
|
|
}
|
|
|
|
// Tax Incl./Excl. by user role
|
|
if ( 'yes' === get_option( 'wcj_product_listings_display_taxes_by_user_role_enabled', 'no' ) ) {
|
|
add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_by_user_role' ), PHP_INT_MAX );
|
|
}
|
|
|
|
// Tax toggle
|
|
if ( 'yes' === get_option( 'wcj_tax_display_toggle_enabled', 'no' ) ) {
|
|
add_action( 'init', array( $this, 'tax_display_toggle_param' ), PHP_INT_MAX );
|
|
add_filter( 'option_woocommerce_tax_display_shop', array( $this, 'tax_display_toggle' ), PHP_INT_MAX );
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* tax_display_toggle_param.
|
|
*
|
|
* @version 3.2.4
|
|
* @since 3.2.4
|
|
*/
|
|
function tax_display_toggle_param() {
|
|
wcj_session_maybe_start();
|
|
if ( isset( $_REQUEST['wcj_button_toggle_tax_display'] ) ) {
|
|
$current_value = ( '' == ( $session_value = wcj_session_get( 'wcj_toggle_tax_display' ) ) ? get_option( 'woocommerce_tax_display_shop', 'excl' ) : $session_value );
|
|
wcj_session_set( 'wcj_toggle_tax_display', ( 'incl' === $current_value ? 'excl' : 'incl' ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* tax_display_toggle.
|
|
*
|
|
* @version 3.2.4
|
|
* @since 3.2.4
|
|
* @todo widget
|
|
* @todo (maybe) floating button or at least give CSS instructions ($)
|
|
* @todo (maybe) position near the price or at least give "Product Info" instructions
|
|
*/
|
|
function tax_display_toggle( $value ) {
|
|
if ( ! wcj_is_frontend() ) {
|
|
return $value;
|
|
}
|
|
if ( '' != ( $session_value = wcj_session_get( 'wcj_toggle_tax_display' ) ) ) {
|
|
return $session_value;
|
|
}
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* tax_display_by_user_role.
|
|
*
|
|
* @version 3.2.4
|
|
* @since 3.2.0
|
|
*/
|
|
function tax_display_by_user_role( $value ) {
|
|
if ( ! wcj_is_frontend() ) {
|
|
return $value;
|
|
}
|
|
if ( '' != ( $display_taxes_by_user_role_roles = get_option( 'wcj_product_listings_display_taxes_by_user_role_roles', '' ) ) ) {
|
|
$current_user_first_role = wcj_get_current_user_first_role();
|
|
if ( in_array( $current_user_first_role, $display_taxes_by_user_role_roles ) ) {
|
|
if ( 'no_changes' != ( $tax_display = get_option( 'wcj_product_listings_display_taxes_by_user_role_' . $current_user_first_role, 'no_changes' ) ) ) {
|
|
return $tax_display;
|
|
}
|
|
}
|
|
}
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* tax_display_by_product.
|
|
*
|
|
* @version 3.2.4
|
|
* @since 2.5.5
|
|
*/
|
|
function tax_display_by_product( $value ) {
|
|
if ( ! wcj_is_frontend() ) {
|
|
return $value;
|
|
}
|
|
$product_id = get_the_ID();
|
|
if ( 'product' === get_post_type( $product_id ) ) {
|
|
$products_incl_tax = get_option( 'wcj_product_listings_display_taxes_products_incl_tax', '' );
|
|
$products_excl_tax = get_option( 'wcj_product_listings_display_taxes_products_excl_tax', '' );
|
|
$product_cats_incl_tax = get_option( 'wcj_product_listings_display_taxes_product_cats_incl_tax', '' );
|
|
$product_cats_excl_tax = get_option( 'wcj_product_listings_display_taxes_product_cats_excl_tax', '' );
|
|
if ( '' != $products_incl_tax || '' != $products_incl_tax || '' != $products_incl_tax || '' != $products_incl_tax ) {
|
|
// Products
|
|
if ( ! empty( $products_incl_tax ) ) {
|
|
if ( in_array( $product_id, $products_incl_tax ) ) {
|
|
return 'incl';
|
|
}
|
|
}
|
|
if ( ! empty( $products_excl_tax ) ) {
|
|
if ( in_array( $product_id, $products_excl_tax ) ) {
|
|
return 'excl';
|
|
}
|
|
}
|
|
// Categories
|
|
$product_categories = get_the_terms( $product_id, 'product_cat' );
|
|
if ( ! empty( $product_cats_incl_tax ) ) {
|
|
if ( ! empty( $product_categories ) ) {
|
|
foreach ( $product_categories as $product_category ) {
|
|
if ( in_array( $product_category->term_id, $product_cats_incl_tax ) ) {
|
|
return 'incl';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ( ! empty( $product_cats_excl_tax ) ) {
|
|
if ( ! empty( $product_categories ) ) {
|
|
foreach ( $product_categories as $product_category ) {
|
|
if ( in_array( $product_category->term_id, $product_cats_excl_tax ) ) {
|
|
return 'excl';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $value;
|
|
}
|
|
|
|
}
|
|
|
|
endif;
|
|
|
|
return new WCJ_Tax_Display();
|