Custom Bulk Pricing in WooCommerce Using ACF Fields

ACF ACF Guide ACF Option Page ACF Tutorials Code Snippets PHP Woocommerce WooCommerce Customization WooCommerce Development Woocommerce Hooks WooCommerce Tips Wordpress WordPress Development

Custom Bulk Pricing in WooCommerce Using ACF Fields Tutorial/Guide

Custom Bulk Pricing in WooCommerce Using ACF Fields

  To implement this feature, you'll need to add a repeater field in ACF for defining quantity and pricing tiers on the product admin page. These prices will then be shown on the product page and used to calculate the total price based on selected quantity during checkout. Follow the steps below:

Step 1: Activate ACF Plugin

Ensure the ACF plugin is installed and activated on your site.

Step 2: Add ACF Repeater Field for Quantity & Price

In your WordPress dashboard, navigate to Custom Fields > Add New. Create a field group with a Repeater for quantity and price, and set their field types accordingly.

Step 3: Display Bulk Prices on Product Page

Insert the following code in your theme's `functions.php` to pull and display repeater values on the single product page:

function display_all_prices_on_product_page() {
    global $post;

    // Check if the current post is a product
    if ( 'product' !== get_post_type( $post ) ) {
        return;
    }

    // Get the ACF repeater field data
    $quantity_and_prices = get_field( 'quantity_and_prices', $post->ID );

    // Display the prices if available
    if ( $quantity_and_prices ) {
        echo '<h2>All Prices:</h2>';
        echo '<ul>';
        foreach ( $quantity_and_prices as $item ) {
            $quantity = (int) $item['quantity'];
            $price    = (float) $item['price'];
            echo '<li>' . esc_html( $quantity ) . ' - ' . wc_price( $price ) . '</li>';
        }
        echo '</ul>';
    }
}
add_action( 'woocommerce_single_product_summary', 'display_all_prices_on_product_page', 25 );

Step 4: Dynamic Pricing When Adding to Cart

To adjust the price based on selected quantity, use this hook:

function adjust_price_by_quantity( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;

    foreach ( $cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];
        $price_data = get_field( 'quantity_and_prices', $product->get_id() );

        if ( $price_data ) {
            $qty = (int) $cart_item['quantity'];
            foreach ( $price_data as $item ) {
                if ( $qty === (int) $item['quantity'] ) {
                    $product->set_price( (float) $item['price'] );
                    break;
                }
            }
        }
    }
}
add_action( 'woocommerce_before_calculate_totals', 'adjust_price_by_quantity', 10 );

By implementing the steps above, you'll enable WooCommerce to support dynamic pricing based on selected quantity using ACF.

💡 Have a Coding Problem?

Search our archives or reach out to our team for solutions and expert advice.