Php 在woocommerce新订单电子邮件中包括产品类别

Php 在woocommerce新订单电子邮件中包括产品类别,php,wordpress,email,woocommerce,Php,Wordpress,Email,Woocommerce,我用Wordpress和WooCommerce建立了一个电子商务商店,在我的新订单电子邮件中包含产品类别时有点困难。 基本上,当客户进行购买时,我会收到一封包含新订单详细信息的电子邮件,但电子邮件中不包括产品类别 下面是我的email-order-items.php文件中的代码 <?php if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } foreach ( $items as $item_id =

我用Wordpress和WooCommerce建立了一个电子商务商店,在我的新订单电子邮件中包含产品类别时有点困难。 基本上,当客户进行购买时,我会收到一封包含新订单详细信息的电子邮件,但电子邮件中不包括产品类别

下面是我的email-order-items.php文件中的代码

<?php

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['item_meta'], $_product );
?>
<tr>
    <td style="text-align:left; vertical-align:middle; border: 1px solid #eee; word-wrap:break-word;"><?php


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

        // Product name
        echo apply_filters( 'woocommerce_order_item_name', $item['name'], $item );


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

        // File URLs
        if ( $show_download_links && is_object( $_product ) && $_product->exists() && $_product->is_downloadable() ) {

            $download_files = $order->get_item_downloads( $item );
            $i              = 0;

            foreach ( $download_files as $download_id => $file ) {
                $i++;

                if ( count( $download_files ) > 1 ) {
                    $prefix = sprintf( __( 'Download %d', 'woocommerce' ), $i );
                } elseif ( $i == 1 ) {
                    $prefix = __( 'Download', 'woocommerce' );
                }

                echo '<br/><small>' . $prefix . ': <a href="' . esc_url( $file['download_url'] ) . '" target="_blank">' . esc_html( $file['name'] ) . '</a></small>';
            }
        }

        // Variation
        if ( $item_meta->meta ) {
            echo '<br/><small>' . nl2br( $item_meta->display( true, true ) ) . '</small>';
        }

    ?></td>
    <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $item['qty'] ;?></td>
    <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $order->get_formatted_line_subtotal( $item ); ?></td>
</tr>

<?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;"><?php echo wpautop( do_shortcode( wp_kses_post( $purchase_note ) ) ); ?></td>
    </tr>
<?php endif; ?>

请尝试以下代码:

<?php
    /**
     * Email Order Items
     *
     * @author      WooThemes
     * @package     WooCommerce/Templates/Emails
     * @version     2.1.2
     */

    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['item_meta'], $_product );
        $terms = get_the_term_list( $_product->id, 'product_cat' );
        ?>
        <tr>
            <td style="text-align:left; vertical-align:middle; border: 1px solid #eee; word-wrap:break-word;"><?php
                echo ''.$terms.': ';
                // Show title/image etc
                if ( $show_image ) {
                    echo apply_filters( 'woocommerce_order_item_thumbnail', '<img src="' . ( $_product->get_image_id() ? current( wp_get_attachment_image_src( $_product->get_image_id(), 'thumbnail') ) : wc_placeholder_img_src() ) .'" alt="' . __( 'Product Image', 'woocommerce' ) . '" height="' . esc_attr( $image_size[1] ) . '" width="' . esc_attr( $image_size[0] ) . '" style="vertical-align:middle; margin-right: 10px;" />', $item );
                }

                // Product name
                echo apply_filters( 'woocommerce_order_item_name', $item['name'], $item )."something";

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

                // File URLs
                if ( $show_download_links && is_object( $_product ) && $_product->exists() && $_product->is_downloadable() ) {

                    $download_files = $order->get_item_downloads( $item );
                    $i              = 0;

                    foreach ( $download_files as $download_id => $file ) {
                        $i++;

                        if ( count( $download_files ) > 1 ) {
                            $prefix = sprintf( __( 'Download %d', 'woocommerce' ), $i );
                        } elseif ( $i == 1 ) {
                            $prefix = __( 'Download', 'woocommerce' );
                        }

                        echo '<br/><small>' . $prefix . ': <a href="' . esc_url( $file['download_url'] ) . '" target="_blank">' . esc_html( $file['name'] ) . '</a></small>';
                    }
                }

                // Variation
                if ( $item_meta->meta ) {
                    echo '<br/><small>' . nl2br( $item_meta->display( true, true ) ) . '</small>';
                }

            ?></td>
            <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $item['qty'] ;?></td>
            <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $order->get_formatted_line_subtotal( $item ); ?></td>
        </tr>

        <?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;"><?php echo wpautop( do_shortcode( wp_kses_post( $purchase_note ) ) ); ?></td>
            </tr>
        <?php endif; ?>

    <?php endforeach; ?>


将此代码放在functions.php中

function modfuel_woocommerce_before_order_add_cat($name, $item){

$product_id = $item['product_id'];

$_product = wc_get_product( $product_id );
$htmlStr = "";
$cats = "";
$terms = get_the_terms( $product_id, 'product_cat' );

$count = 0;
foreach ( $terms as $term) {
$count++;

if($count > 1){
  $cats .= $term->name;
}
else{
  $cats .= $term->name . ',';
}

}

$cats = rtrim($cats,',');

$htmlStr .= $_product->get_title();

$htmlStr .= "<p>Designer: " . $cats . "</p>";

return $htmlStr;
}

add_filter('woocommerce_order_item_name','modfuel_woocommerce_before_order_add_cat', 10, 2);
功能modfuel\u woodcommerce\u订单前\u添加\u cat($name,$item){
$product_id=$item['product_id'];
$\u product=wc\u get\u product($product\u id);
$htmlStr=“”;
$cats=“”;
$terms=获取术语($product_id,'product_cat');
$count=0;
foreach($terms作为$term){
$count++;
如果($count>1){
$cats.=$term->name;
}
否则{
$cats.=$term->name.',';
}
}
$cats=rtrim($cats,,');
$htmlStr.=$\u产品->获取标题();
$htmlStr.=“设计师:”.$cats.“

”; 返回$htmlStr; } 添加过滤器('woocommerce\u order\u item\u name','modfuel\u woocommerce\u order\u add\u cat',10,2);
Hi Rohill,非常感谢您的输入。我添加了您的代码并进行了测试,但不幸的是,电子邮件中的输出是相同的。可能是我的主题文件覆盖了模板文件