检查 WooCommerce 产品(简单或变体)是否有库存并将标签显示为简码

Check if WooCommerce product (simple or variations) are in stock and display label as shortcode

我想要一个可以添加到 WooCommerce 产品页面的简码。短代码将简单地检查产品库存并说“有库存”(如果有的话)。如果产品(或任何变体)没有库存,则显示“缺货”。

此简码应该适用于简单产品和可变产品。对于 Simple 产品,它只会检查库存数量。对于可变产品,它将检查所有变体的库存数量(因为可变产品库存是在库存级别管理的)。如果任何变体都有库存,那么它仍将 return 显示为“有货”。

如果特定产品的所有变体都是 0,它只会说“缺货”。

我计划在我正在构建的产品页面模板中使用此简码。

现在我创建了这个:

/* Create stock checker of overall product */
add_shortcode( 'fs-product-stock-status', 'fs_product_stock_status_shortcode' );
function fs_product_stock_status_shortcode( $atts ) {
    // begin output buffering
    ob_start();

    $stockstatus = get_post_meta( get_the_ID(), '_stock_status', true );

    if ($stockstatus == 'outofstock') {
        echo '<p class="stock out-of-stock">Out of stock</p>';
    }
    elseif ($stockstatus == 'instock') {
        echo '<p class="stock in-stock">In stock</p>';
    }

    // end output buffering, grab the buffer contents, and empty the buffer
    return ob_get_clean();
}

但我对其他可能更好的解决方案持开放态度。不过这似乎有效。