WooCommerce电子邮件订单 - 产品对齐

时间:2016-08-11 11:24:57

标签: php html wordpress woocommerce

我想编辑WooCommerce订单的电子邮件模板,这样我就可以获得每行3个产品(截图),而不是通常的每行产品表。 enter image description here 我不知道如何设置每行3个产品的限制。 只有前3个产品正确显示。 enter image description here

这是我的代码段。

<?php
/**
 * Email Order Items
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

foreach ( $items as $item_id => $item ) :
    $_product     = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
    $item_meta    = new WC_Order_Item_Meta( $item, $_product );

    if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) {
        ?>

    <td class="<?php echo esc_attr( apply_filters( 'woocommerce_order_item_class', 'order_item', $item, $order ) ); ?>" style="text-align:center; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;"><?php

            // Show title/image etc
            if ( $show_image ) {
                echo apply_filters( 'woocommerce_order_item_thumbnail', '<div style="margin-bottom: 5px"><img src="' . ( $_product->get_image_id() ? current( wp_get_attachment_image_src( $_product->get_image_id(), 'thumbnail') ) : wc_placeholder_img_src() ) .'" alt="' . esc_attr__( 'Product Image', 'woocommerce' ) . '" height="' . esc_attr( $image_size[1] ) . '" width="' . esc_attr( $image_size[0] ) . '" style="vertical-align:middle; margin-right: 10px;" /></div>', $item );
                echo  nl2br ("\n");
            }

            // Product name
            echo apply_filters( 'woocommerce_order_item_name', $item['name'], $item, false );
            echo  nl2br ("\n");

            //Product quantity
            echo apply_filters( 'woocommerce_email_order_item_quantity', $item['qty'], $item );
            echo  nl2br (" piece(s)\n");


            echo apply_filters( 'woocommerce_cart_item_weight', $_product->get_weight());
            echo  nl2br (" gr\n");


            // SKU
            if ( $show_sku && is_object( $_product ) && $_product->get_sku() ) {
                echo  nl2br ("\n");
                echo ' (#' . $_product->get_sku() . ')';
            }

            // allow other plugins to add additional product information here
            do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order, $plain_text );

            ?></td>

    <?php
}

if ( $show_purchase_note && is_object( $_product ) && ( $purchase_note = get_post_meta( $_product->id, '_purchase_note', true ) ) ) : ?>
    <tr>
        <td colspan="3" style="text-align:left; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;"><?php echo wpautop( do_shortcode( wp_kses_post( $purchase_note ) ) ); ?></td>
    </tr>
<?php endif; ?>

1 个答案:

答案 0 :(得分:0)

我发现了一个解决方案,以防任何人有兴趣像这样对齐他的产品。

我插入了一个计数器$ x来计算foreach循环结束时的产品,一旦它到达第3个产品,我有一个if语句来更改表行并重新启动计数器。

以下是电子邮件的现状:http://imgur.com/6q14Pes     

if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

$x = 0;

foreach ( $items as $item_id => $item ) :
$_product     = apply_filters( 'woocommerce_order_item_product', $order->get_product_from_item( $item ), $item );
$item_meta    = new WC_Order_Item_Meta( $item, $_product );
$x += 1;

if( $x > 3 ){ ?>
    <tr></tr>
    <?php
    $x = 0;
}

if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) {
          ?>

    <td class="<?php echo esc_attr( apply_filters( 'woocommerce_order_item_class', 'order_item', $item, $order ) ); ?>" style="text-align:center; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif; word-wrap:break-word;"><?php

    // Show title/image etc
    if ( $show_image ) {
        echo apply_filters( 'woocommerce_order_item_thumbnail', '<div style="margin-bottom: 5px"><img src="' . ( $_product->get_image_id() ? current( wp_get_attachment_image_src( $_product->get_image_id(), 'thumbnail') ) : wc_placeholder_img_src() ) .'" alt="' . esc_attr__( 'Product Image', 'woocommerce' ) . '" height="' . esc_attr( $image_size[1] ) . '" width="' . esc_attr( $image_size[0] ) . '" style="vertical-align:middle; margin-right: 10px;" /></div>', $item );
        echo  nl2br ("\n");
    }

    // Product name
    echo apply_filters( 'woocommerce_order_item_name', $item['name'], $item, false );
    echo  nl2br ("\n");

    //Product quantity
    echo apply_filters( 'woocommerce_email_order_item_quantity', $item['qty'], $item );
    echo  nl2br (" piece(s)\n");

    //Product weight
    echo apply_filters( 'woocommerce_cart_item_weight', $_product->get_weight());
    echo  nl2br (" gr\n");

    // SKU
    if ( $show_sku && is_object( $_product ) && $_product->get_sku() ) {
        echo  nl2br ("\n");
        echo ' (#' . $_product->get_sku() . ')';
    }

    // allow other plugins to add additional product information here
    do_action( 'woocommerce_order_item_meta_start', $item_id, $item, $order, $plain_text );

        ?></td><?php
}

if ( $show_purchase_note && is_object( $_product ) && ( $purchase_note = get_post_meta( $_product->id, '_purchase_note', true ) ) ) : ?>
    <tr>
    <td colspan="3" style="text-align:left; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;"><?php echo wpautop( do_shortcode( wp_kses_post( $purchase_note ) ) ); ?></td>
    </tr>
<?php endif; ?>