我正在尝试显示包含“精选”产品的“处理中”订单的特定列表的特定字符串。
更准确地说,当两个条件累计满足时,我想回显一条消息:
1)订单状态为“处理中”;和
2)所有按该顺序排列的产品均标记为“精选”。
换句话说,一旦我将所有订购的产品手动标记为“精选”,则应该在我的用户的帐户页面上回显特定消息。
到目前为止,我的代码(但没有给我期望的结果):
<?php
foreach ( $order_summary as $order ) :
$order = wc_get_order( $order->order_id );
$order_id = $order->get_id();
$order_items = get_products_for_order( $order_id );
if ( $order->get_status() == 'processing' ) {
if ( $order_items->is_featured() ) {
echo 'Something';
} else {
echo 'Something else';
}
}
?>
我不确定如何正确检查相应订单中是否有“特色”产品。
有什么想法吗?
答案 0 :(得分:0)
get_products_for_order()
函数返回一个产品数组。您将需要在该阵列上运行一个foreach循环,并检查每种产品的功能是否分别。
<?php
foreach ( $order_summary as $order ) {
$order = wc_get_order( $order->order_id );
$order_id = $order->get_id();
$order_items = get_products_for_order( $order_id );
if ( $order->get_status() == 'processing' ) {
foreach( $order_items as $item ) {
if ( $item->is_featured() ) {
echo 'Something';
} else {
echo 'Something else';
}
}
}
}
?>
评论后编辑:
<?php
foreach ( $order_summary as $order ) {
$order = wc_get_order( $order->order_id );
$order_id = $order->get_id();
$order_items = get_products_for_order( $order_id );
if ( $order->get_status() == 'processing' ) {
$featured = true;
foreach( $order_items as $item ) {
if ( !$item->is_featured() ) {
$featured = false;
break;
}
}
if( $featured ) {
echo 'Something';
} else {
echo 'Something else';
}
}
}
?>