Display Woocommerce product price with and without tax and tax amount

后端 未结 4 905
没有蜡笔的小新
没有蜡笔的小新 2020-12-31 13:00

I am using WooCommerce for WordPress and I\'m listing items excluding Tax.

I need to show separately the Price (without tax), the Tax and t

相关标签:
4条回答
  • 2020-12-31 13:24

    At the moment you don't need to change a template anymore. You can set this in the Woocommerce settings:

    • Woocommerce: Tax tab: Display Prices in the Shop / Display Prices During Cart and Checkout
    0 讨论(0)
  • 2020-12-31 13:25

    Update 2018/2019 (for Woocommerce 3+)

    To display price without tax + tax amount + price including tax (on separated lines):

    First read "How to override Woocommerce templates via your theme"

    1) On single-product/price.php template file (single product pages).

    Replace the code with:

    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    
    global $product;
    
    // Get the prices
    $price_excl_tax = wc_get_price_excluding_tax( $product ); // price without VAT
    $price_incl_tax = wc_get_price_including_tax( $product );  // price with VAT
    $tax_amount     = $price_incl_tax - $price_excl_tax; // VAT amount
    
    // Display the prices
    ?>
    <p class="price-excl"><?php echo wc_price( $price_excl_tax ); ?></p>
    <p class="tax-price"><?php  echo wc_price( $tax_amount ); ?></p>
    <p class="price-incl"><?php echo wc_price( $price_incl_tax ); ?></p>
    

    2) On loop/price.php template file (Shop and archive pages).

    Replace the code with:

    if ( ! defined( 'ABSPATH' ) ) {
        exit; // Exit if accessed directly
    }
    
    global $product;
    
    if ( $product->get_price_html() ) :
        // Get the prices
        $price_excl_tax = wc_get_price_excluding_tax( $product ); // price without VAT
        $price_incl_tax = wc_get_price_including_tax( $product );  // price with VAT
        $tax_amount     = $price_incl_tax - $price_excl_tax; // VAT amount
    
        // Display the prices
        ?>
        <span class="price price-excl"><?php echo wc_price( $price_excl_tax ); ?></span><br>
        <span class="price tax-price"><?php  echo wc_price( $tax_amount ); ?></span><br>
        <span class="price price-incl"><?php echo wc_price( $price_incl_tax ); ?></span>
    <?php endif ?>
    

    Documentation:
    • Template structure and how to override Woocommerce templates via your theme
    • wc_get_price_including_tax() product price function
    • wc_get_price_excluding_tax() product price function
    • wc_price() formatting price function
    • wc_get_price_to_display() product price function


    Original answer (before woocommerce 3):

    Before check that your WooCommerce Tax general settings match with your needs.

    As cale_b suggested, you need to copy from woocommerce the templates folder inside your active child theme or theme. Then rename it woocommerce. In this woocommerce templates folder you will find inside single-product subfolder the price.php template to edit related to pricing display in single product pages.

    In single-product/price.php template file just after global $product;, replace the code with:

    ?>
    <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
    <?php
        $price_excl = $product->get_price_excluding_tax(); // price without VAT
        $price_incl = $product->get_price_including_tax();  // price included VAT
        $tax_amount = $price_incl - $price_excl; // VAT price amount
    ?>
        <p class="price"><?php echo woocommerce_price( $price_excl ); /* without VAT */ ?></p> (formatted)
        <p class="price-vat"><?php echo woocommerce_price( $tax_amount); /* VAT */ ?></p>
        <p class="price-and-vat"><?php echo woocommerce_price( $price_incl); /* With VAT  */ ?></p> 
    
        <meta itemprop="price" content="<?php echo esc_attr( $product->get_price() ); ?>" />
        <meta itemprop="priceCurrency" content="<?php echo esc_attr( get_woocommerce_currency() ); ?>" />
        <link itemprop="availability" href="http://schema.org/<?php echo $product->is_in_stock() ? 'InStock' : 'OutOfStock'; ?>" />
    </div>
    

    Because the additional prices are unformatted, you may need to mix some other elements with this additionals prices using some woocommerce php functions like:

    get_price_suffix( ) // Get the suffix to display after prices > 0.
    $currency = esc_attr( get_woocommerce_currency( ) ) // Get the currency code.
    get_woocommerce_currency_symbol( $currency ) // Get the currency symbol.
    get_tax_class( ) // Returns the tax class.
    get_tax_status( ) // Returns the tax status.
    

    Reference: WooCommerce WC_Product class

    0 讨论(0)
  • 2020-12-31 13:39

    WooCommerce v3.0.0 and Later
    As of WooCommerce version 3.0, the function woocommerce_price() is deprecated, as is the method get_price_including_tax(). Instead, you should use wc_get_price_including_tax:

    <?php echo wc_price( wc_get_price_including_tax( $product ) ); ?>
    

    Prior to WooCommerce v3.0.0
    You need to modify a template. Do not modify the core WooCommerce template, but rather make a copy of it to your theme, using the WooCommerce template override system. For help with that, refer to the WooCommerce docs on using the template override system.

    In the price.php template, you will add this bit of code where you want the price, including tax (VAT):

    <?php echo woocommerce_price( $product->get_price_including_tax() ); ?>
    

    Note: the price.php template that you modify should be located here in wp-content/themes/[your theme folder]/woocommerce/single-product/price.php

    0 讨论(0)
  • 2020-12-31 13:40

    Yes, you don't have to edit templates to show VAT. Go to Woocommerce settings > VAT > Price Display suffix. You can add: {price_excluding_tax} to show without VAT.

    0 讨论(0)
提交回复
热议问题