【问题标题】:Display only the first product from an order in Woocommerce在 Woocommerce 中仅显示订单中的第一个产品
【发布时间】:2018-10-17 23:44:38
【问题描述】:

在 Woocommerce 中,我使用以下代码按订单获取产品:

foreach( $order->get_items() as $item_id => $item ) {

   $product = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );

    $is_visible        = $product && $product->is_visible();
    $product_permalink = apply_filters( 'woocommerce_order_item_permalink', $is_visible ? $product->get_permalink( $item ) : '', $item, $order );

    echo apply_filters( 'woocommerce_order_item_name', $product_permalink ? sprintf( '<p><a href="%s">%s</a>', $product_permalink, $item['name'] ) : $item['name'], $item, $is_visible );
    echo apply_filters( 'woocommerce_order_item_quantity_html', ' <strong class="product-quantity">' . sprintf( '&times; %s', $item['qty'] ) . '</strong></p>', $item );
    echo $product->get_image();
}

但我只需要获得第一个产品,而不是全部。有可能吗?

【问题讨论】:

    标签: php wordpress foreach woocommerce break


    【解决方案1】:

    您只需在 foreach 循环的末尾添加break;,即可仅显示第一项

    foreach( $order->get_items() as $item_id => $item ) {
    
       $product = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
    
        $is_visible        = $product && $product->is_visible();
        $product_permalink = apply_filters( 'woocommerce_order_item_permalink', $is_visible ? $product->get_permalink( $item ) : '', $item, $order );
    
        echo apply_filters( 'woocommerce_order_item_name', $product_permalink ? sprintf( '<p><a href="%s">%s</a>', $product_permalink, $item['name'] ) : $item['name'], $item, $is_visible );
        echo apply_filters( 'woocommerce_order_item_quantity_html', ' <strong class="product-quantity">' . sprintf( '&times; %s', $item['qty'] ) . '</strong></p>', $item );
        echo $product->get_image();
    
        break; // <=== We stop the loop
    }
    

    要显示所有项目,但不包括第一个项目,您可以使用 counter,例如:

    $counter = 0; // Initialize the counter
    
    foreach( $order->get_items() as $item_id => $item ) {
        $counter++; // Increase the count
    
        if( $counter !== 1 ){
            $product     = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
    
            $is_visible = $product && $product->is_visible();
            $product_permalink = apply_filters( 'woocommerce_order_item_permalink', $is_visible ? $product->get_permalink( $item ) : '', $item, $order );
    
            echo apply_filters( 'woocommerce_order_item_name', $product_permalink ? sprintf( '<p><a href="%s">%s</a>', $product_permalink, $item['name'] ) : $item['name'], $item, $is_visible );
            echo apply_filters( 'woocommerce_order_item_quantity_html', ' <strong class="product-quantity">' . sprintf( '&times; %s', $item['qty'] ) . '</strong></p>', $item );
            echo $product->get_image();
        }
    }
    

    【讨论】:

    • 好的,如果我想查看除第一个产品以外的所有产品?
    • @GamalElwazeery 为它添加了一个附加项……
    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 2014-05-04
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 2018-08-06
    • 2019-03-06
    相关资源
    最近更新 更多