首页 > 解决方案 > 在 php 条件下应用 css 规则

问题描述

我在 WooCommerce 上添加了一些自定义股票状态消息,其中包含一些 PHP 代码,如下所示:

    //Ajoute "En stock" sous chaque produit
function show_stock() {
    global $product;
    if ( $product->managing_stock() ) { // if manage stock is enabled 
        if (( number_format($product->get_stock_quantity(),0,'','') > 0 ) && ( number_format($product->get_stock_quantity(),0,'','') < 100 )) { // if in stock
            echo '<div class="remaining" style="color:green;">En stockk</div>';
        } elseif (( number_format($product->get_stock_quantity(),0,'','') >= 100 ) && ( number_format($product->get_stock_quantity(),0,'','') < 1000 )) {
            echo '<div class="remaining" style="color:#f2cd00;">Livraison sous 1 mois</div>';
        } elseif (( number_format($product->get_stock_quantity(),0,'','') >= 1000 ) && ( number_format($product->get_stock_quantity(),0,'','') < 2000 )) {
            echo '<div class="remaining" style="color:#f2cd00;">Livraison sous 7 jours</div>';
        } elseif ( number_format($product->get_stock_quantity(),0,'','') < 1 ) {
            echo '<div class="remaining" style="color:red;">Rupture</div>'; 
        }
    }
}

add_action('woocommerce_after_shop_loop_item','show_stock', 10);
add_action ('woocommerce_before_add_to_cart_form','show_stock');

我应用此 CSS 规则使我的单个产品页面中的默认 WooCoomerce 库存消息消失,并避免双重库存状态消息。

p.stock{
    display: none;
}

我遇到的问题是当 stock = 0 时我的 PHP 代码不再工作,然后我的最后一个 php 代码条件不适用(不显示我的自定义消息“破裂”)。

而且因为我在我的库存 = 0 时应用了我的 CSS 规则,所以我没有库存状态。

然后我想只在我的股票 > 0 时应用我的 CSS 规则。或者想办法让我的最后一个条件 php 应用于股票 < 1。

:'( 谢谢你

标签: phpcsswordpresswoocommercehook-woocommerce

解决方案


我建议重构你的代码,因为你的“逻辑”是正确的,但你的语义不是那么神。

1 - 定义返回类型$product->get_stock_quantity()

2 - 在 php 中,类型号也等同于字符串(因为作为动态类型)

3 - 验证$product->get_stock_quantity()列表为空时的返回值


推荐阅读