简体   繁体   中英

Get the count of all “In stock” products in WooCommerce

I have a site where products are considered trade/deal. Therefore, when someone take a trade (buy a product), it become out of stock.

What would be the PHP snippet to display the remaining numbers of product currently available (basically In Stock) ?

ex: Hurry Up! Only 10 trades (woocommerce -> products) available!

Thanks in advance!

I tried the code provided :

function fp2() {
    global $wpdb; 

    $stock = get_post_meta( $post->ID, '_stock', true ); 

    echo '<span style="color:#fff;text-align:center;font-size:12px">Remaining Trade:' . $stock;
}
add_shortcode('fp7', 'fp2');

Updated (2021)

Here is a custom function with a SQL query that will return the products "instock" count:

function get_instock_products_count(){
    global $wpdb;

    // The SQL query
    $result = $wpdb->get_var( "
        SELECT COUNT(p.ID)
        FROM {$wpdb->prefix}posts as p
        INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
        WHERE p.post_type LIKE '%product%'
        AND p.post_status = 'publish'
        AND pm.meta_key = '_stock_status'
        AND pm.meta_value = 'instock'
    " );
    
    return reset($result);
}

Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

Tested and working


Usage example (in any php file) :

$count = get_instock_products_count();
$message = sprintf( __( 'Hurry Up! Only %s remaining trades' ), $count );
echo '<div class="woocommerce-message">'.$message.'</div>';

will display something like:

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM