How to Add Custom Stock Status Functionality to WooCommerce 4 ?

Susan Sarandon
Release: 2024-11-02 19:11:02
Original
408 people have browsed it

How to Add Custom Stock Status Functionality to WooCommerce 4 ?

How to Add Custom Stock Status Functionality to WooCommerce 4

Introduction

Adding custom stock statuses to your WooCommerce products allows you to provide more detailed information about their availability. This can help improve your customers' shopping experience and reduce confusion.

Custom Stock Status Options

To achieve custom stock status functionality, follow these steps:

  1. Add Custom Stock Statuses:

    <code class="php">function filter_woocommerce_product_stock_status_options( $status ) {
        // Add new statuses
        $status['pre_order'] = __( 'Pre order', 'woocommerce' );
        $status['contact_us'] = __( 'Contact us', 'woocommerce' );
    
        return $status;
    }
    add_filter( 'woocommerce_product_stock_status_options', 'filter_woocommerce_product_stock_status_options', 10, 1 );</code>
    Copy after login
  2. Update Availability Text and Class:

    <code class="php">function filter_woocommerce_get_availability_text( $availability, $product ) {
        // Get stock status
        switch( $product->get_stock_status() ) {
            case 'pre_order':
                $availability = __( 'Pre order', 'woocommerce' );
            break;
            case 'contact_us':
                $availability = __( 'Contact us', 'woocommerce' );
            break;
        }
    
        return $availability; 
    }
    add_filter( 'woocommerce_get_availability_text', 'filter_woocommerce_get_availability_text', 10, 2 );
    
    function filter_woocommerce_get_availability_class( $class, $product ) {
        // Get stock status
        switch( $product->get_stock_status() ) {
            case 'pre_order':
                $class = 'pre-order';
            break;
            case 'contact_us':
                $class = 'contact-us';
            break;
        }
    
        return $class;
    }
    add_filter( 'woocommerce_get_availability_class', 'filter_woocommerce_get_availability_class', 10, 2 );</code>
    Copy after login
  3. Display Custom Statuses on Admin Product List:

    <code class="php">function filter_woocommerce_admin_stock_html( $stock_html, $product ) {
        // Simple
        if ( $product->is_type( 'simple' ) ) {
            // Get stock status
            $product_stock_status = $product->get_stock_status();
        // Variable
        } elseif ( $product->is_type( 'variable' ) ) {
            foreach( $product->get_visible_children() as $variation_id ) {
                // Get product
                $variation = wc_get_product( $variation_id );
    
                // Get stock status
                $product_stock_status = $variation->get_stock_status();
            }
        }
    
        // Stock status
        switch( $product_stock_status ) {
            case 'pre_order':
                $stock_html = '<mark class=&quot;pre-order&quot; style=&quot;background:transparent none;color:#33ccff;font-weight:700;line-height:1;&quot;>' . __( 'Pre order', 'woocommerce' ) . '</mark>';
            break;
            case 'contact_us':
                $stock_html = '<mark class=&quot;contact-us&quot; style=&quot;background:transparent none;color:#cc33ff;font-weight:700;line-height:1;&quot;>' . __( 'Contact us', 'woocommerce' ) . '</mark>';
            break;
        }
    
        return $stock_html;
    }
    add_filter( 'woocommerce_admin_stock_html', 'filter_woocommerce_admin_stock_html', 10, 2 );</code>
    Copy after login
  4. Use Custom Statuses in Hooks:

    Option 1: Using global $product

    <code class="php">function woocommerce_my_callback() {
        // Get the global product object
        global $product;
    
        // Is a WC product
        if ( is_a( $product, 'WC_Product' ) ) {
            // Get stock status
            $product_stock_status = $product->get_stock_status();
    
            // Use this line during testing, delete afterwards!
            echo '<p style=&quot;color:red;font-size:20px;&quot;>DEBUG INFORMATION = ' . $product_stock_status . '</p>';
    
            // Compare
            if ( $product_stock_status == 'My custom stock status' ) {
                // Etc..
            }
        }
    }
    add_action( 'woocommerce_shop_loop_item_title', 'woocommerce_my_callback', 10 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_my_callback', 10 );</code>
    Copy after login

    Option 2: Passing $product to callback

    <code class="php">function filter_woocommerce_get_price_html( $price, $product ) {
        // Is a WC product
        if ( is_a( $product, 'WC_Product' ) ) {
            // Get stock status
            $product_stock_status = $product->get_stock_status();
    
            // Use this line during testing, delete afterwards!
            echo '<p style=&quot;color:red;font-size:20px;&quot;>DEBUG INFORMATION = ' . $product_stock_status . '</p>';
    
            // Compare
            if ( $product_stock_status == 'My custom stock status' ) {
                // Etc..
                // $price .= ' my text';
            }
        }
    
        return $price;
    }
    add_filter( 'woocommerce_get_price_html', 'filter_woocommerce_get_price_html', 10, 2 );</code>
    Copy after login

Conclusion

Adding custom stock statuses to WooCommerce provides greater flexibility and information to your customers. By following these steps, you can easily extend WooCommerce's default functionality and enhance the shopping experience for your users.

The above is the detailed content of How to Add Custom Stock Status Functionality to WooCommerce 4 ?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!