首页 > 解决方案 > 有人知道如何根据字符串名称更改颜色吗?

问题描述


如果订单状态为“待付款”,我尝试将 order-status-span-element 的颜色更改为红色。
一旦状态更改为“已完成”,跨度文本颜色应切换为绿色。

这是干净的 div 代码:

<div class="order-status">
        <span>Order Status</span>
        <?php elseif ( 'order-status' === $column_id ) : ?>
        <?php echo '<span id="order-status-value">' . esc_html( wc_get_order_status_name( $order->get_status() ) ) . '<span>'; ?>

    </div>

我试图插入一个正确的 if 语句,但我不知道我需要插入哪个函数或变量。
这是片段只是我的 orders.php ->(.../my-account/orders) 的一部分。

<div class="order-status">
    <span>Order Status</span>
    <?php elseif ( 'order-status' === $column_id ) : ?>
    <?php echo '<span id="order-status-value">' . esc_html( wc_get_order_status_name( $order->get_status() ) ) . '<span>';
        if ( strcasecmp( wc_get_order_status_name( $order->get_status() ) == 0 ) ) :
                echo "The if statement works!";
        ?>      
                <style type="text/css">
                    #order-status-value {
                        color: green;
                    }
                </style>
        <?php 
        else: 
        ?>
                <style type="text/css">
                    #order-status-value {
                        color: red;
                    }
                </style>
    </div>
</div>

此代码不起作用。

标签: phpcssif-statementwoocommerce

解决方案


您可以使用“样式”HTML 属性来更改颜色:

<?php

    $is_green = wc_get_order_status_name($order->get_status()) == 0;
        
    echo '<span id="order-status-value" ' 
    . ($is_green ? 'style="color:green"' : '')
    . '>' 
    . esc_html( wc_get_order_status_name( $order->get_status() ) ) 
    . '<span>';

推荐阅读