您的问题是对CSS/HTML工作原理的误解。
举个例子:
<style>p { color: red; }</style>
<p>1</p>
<style>p { color: blue; }</style>
<p>2</p>
<style>p { color: green; }</style>
<p>3</p>
Which colour is the 1st paragraph?
我怀疑你会回答红色,但那是不正确的。所有段落均为绿色。
断开的是p { color: green; }
并不意味着;从这里开始,段落为绿色“,它的意思是;all 页面上的段落为绿色“。
更糟糕的是,这些是内联样式标记,这是非常糟糕的做法,完全没有必要。
因此,只需添加一个提及订单状态的HTML类,并将规则放入CSS文件中即可更改颜色,例如:。
<div class="order-actions2 order-status--complete">
.order-status--complete {
background-color: green;
}
在PHP中,可以执行以下操作:
<div class="order-actions2 order-status--<?php echo esc_attr( $order->status ); ?>">
这将完全从PHP中删除代码的样式部分,大大简化了事情,并使其更易于使用。
记住,CSS规则在整个页面上全局应用。.order-actions2 { ... }
指all具有order-actions2
作为一个HTML类,无论它们在页面上的位置如何。
您可能还想使用style=""
属性,这也是非常非常糟糕的做法。忽略任何建议此解决方案的人。
一些额外注意事项:
那$actions = ..
行在每种情况下都是相同的,只需将它移到末尾,并在if检查之前调用它一次,没有理由附加 . \' \'
只需在第一个字符串中添加空格sanitize_html_class
不能替代esc_attr
. 我们在这里逃跑,没有消毒,所以它还得包起来esc_attr