我为订单增加了额外费用,其中一项是可选的(客户可以使用AJAX单选按钮在结帐页面上选择)。

我的目标是在仅添加了可选费用的那些订单的详细信息内回显客户帐户中的自定义消息。

因此,基本上来说,我有3个下订单的费用(所有费用都存储在wp_woocommerce_order_items表中,作为feeorder_item_type列中)。

这三种费用之一称为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,但是我不知道该怎么做并且到目前为止找不到有效的解决方案。

最佳答案

经过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;

}

08-04 17:17