我为订单增加了额外费用,其中一项是可选(客户可以使用AJAX单选按钮在结帐页面上选择)。
我的目标是在仅添加了可选费用的订单的详细信息内回显客户帐户中的自定义消息。
因此,基本上来说,我要支付3笔下订单费用(所有费用都存储在wp_woocommerce_order_items
列中的fee
中的order_item_type
列中)。
这3项费用中的一项称为Optional Fee
(我的目标所需的一项)。
如何检查订单项目中是否存在此Optional Fee
?
我从下面的代码开始,但是它只能获取上次存储的费用的名称,因此与Optional Fee
不匹配。
$order = wc_get_order( $order_id );
foreach ( $order->get_items('fee') as $item_id => $item ) {
$fee_name = $item->get_name(); // This only gets me the name of the last fee stored in order items table.
if ( $fee_name == 'Optional Fee' ) {
echo 'Custom message';
}
}
我认为我应该以某种方式获取费用列表(它是一个数组吗?),并检查列表中是否存在Optional Fee
,但我不知道该怎么做并且找不到一个到目前为止有效的解决方案。
答案 0 :(得分:0)
经过2天的反复试验,我终于明白了。我不知道这是否是最好的解决方案,但是它有效。
基本上,我需要做的是返回真声明,如果在遍历订单的费用项目时找到了Optional Fee
。
如果有人需要类似的东西,这是代码:
$order = wc_get_order( $order_id );
$optional_fee_exists = false;
$fee_counter = 0;
foreach ( $order->get_fees() as $item_fee ) {
$fee_counter++;
$fee_name = $item_fee->get_name();
if ( $fee_name == 'Optional Fee' ) {
$optional_fee_exists = true;
}
}
if ( $optional_fee_exists ) {
//do stuff;
}