Показывать только первый товар из заказа в Woocommerce - PullRequest
0 голосов
/ 18 октября 2018

В 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();
}

, но мне нужно получить только первый продукт, а не все.Возможно ли это?

1 Ответ

0 голосов
/ 18 октября 2018

Вам просто нужно добавить break; в конце цикла foreach, чтобы отображал только первый элемент :

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 = 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();
    }
}
...