【问题标题】:Does anybody know how to change the color depending on stringname?有人知道如何根据字符串名称更改颜色吗?
【发布时间】:2020-11-19 02:42:25
【问题描述】:

如果订单状态为“待付款”,我尝试将 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 语句,但我不知道我需要插入哪个函数或变量。
这是sn-p 只是我的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>

此代码不起作用。

【问题讨论】:

  • 在后台还是前台?
  • 您好,在前端 - 订单页面,用户可以看到 (.../my-account/orders)。
  • 这段代码中没有if...
  • @Berto99 在第 5 行有一个 if 语句。我只是没有添加“else”来完成它。
  • 为了帮助将来发现问题,您还可以在开发过程中将其添加到脚本的顶部:ini_set('display_startup_errors', true); ini_set('display_errors', true); error_reporting(E_ALL); ...它会提醒您注意 @ 中缺少的 ) 987654326@

标签: php css if-statement woocommerce


【解决方案1】:

您可以使用“样式”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>';

【讨论】:

  • unsafe-inline 浮现在脑海中……但这绝对可以解决他目前的危机。
  • 你是对的@IncredibleHat。使用类属性应该是更好的选择。
  • 但这有点取决于,大多数网站都很好,没有 CSP 的地狱 ;-)
  • 我最大的问题是第 55 行有一个错误 - 那个带有 if 语句的错误。但是您的解决方案似乎要好得多:)“wc_get_order_status_name($order->get_status()”我刚试过,但这一定是不正确的。
  • 在您发布的代码中,您缺少最后一个右括号:` if ( strcasecmp( wc_get_order_status_name( $order->get_status() ) == 0 )) :`。而且在我的代码中。我已经更新了它。但删除了 strcasecmp()。需要 2 个参数。
【解决方案2】:

这是我目前使用的解决方案 - 这个解决方案非常有效。

<div class="order-status">
            <span>Order Status</span>
            <?php           
            elseif ( 'order-status' === $column_id ) :
                $order_color_check = $order->get_status();  
                if($order_color_check=="completed") :
                    echo '<span class="order-status-value" style="color: green;">' . esc_html( wc_get_order_status_name( $order->get_status() ) ) . '</span>';
                    
                else :
                    echo '<span class="order-status-value" style="color: red;">' . esc_html( wc_get_order_status_name( $order->get_status() ) ) . '</span>';
                endif; ?>
        </div>

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多