Php 我可以在Woocommerce电子邮件中按类别对订单项目进行排序吗

Php 我可以在Woocommerce电子邮件中按类别对订单项目进行排序吗,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我想按类别对Woocommerce通知电子邮件上的项目进行排序,因为默认情况下,它们是按客户选择并添加到购物车的顺序进行排序的。在此方面的任何帮助都将不胜感激。谢谢更改sql查询中的顺序 转到WoodPress管理员中的WooCommerce>设置。在“产品”选项卡上的“显示设置”下,更改默认的产品排序。实际上,我已经在email-order-items.php中添加了一个解决方案-这会将类别添加到管理电子邮件中,并使用类别进行排序,我的类别带有与仓库位置相关的编号-因此,将所有相同的位置放在一

我想按类别对Woocommerce通知电子邮件上的项目进行排序,因为默认情况下,它们是按客户选择并添加到购物车的顺序进行排序的。在此方面的任何帮助都将不胜感激。谢谢

更改sql查询中的顺序

转到WoodPress管理员中的WooCommerce>设置。在“产品”选项卡上的“显示设置”下,更改默认的产品排序。

实际上,我已经在email-order-items.php中添加了一个解决方案-这会将类别添加到管理电子邮件中,并使用类别进行排序,我的类别带有与仓库位置相关的编号-因此,将所有相同的位置放在一起确实有助于客户选择订单

该模板是旧版本,但仍然有效

//**
 * Email Order Items
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/emails/email-order-items.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see      https://docs.woocommerce.com/document/template-structure/
* @author       WooThemes
* @package  WooCommerce/Templates/Emails
* @version     3.0.0
*/

 if ( ! defined( 'ABSPATH' ) ) {
 exit;
}

$text_align = is_rtl() ? 'right' : 'left';
global  $woocommerce , $wpdb;

$c1 = $wpdb->get_results("select t1.order_item_name,t1.order_item_id,t5.name,t2.meta_value from wp_woocommerce_order_items as t1 LEFT JOIN wp_woocommerce_order_itemmeta as t2 ON t1.order_item_id = t2.order_item_id LEFT JOIN wp_term_relationships as t3 ON t2.meta_value = t3.object_id LEFT JOIN wp_term_taxonomy as t4 ON t3.term_taxonomy_id = t4.term_taxonomy_id LEFT JOIN wp_terms as t5 ON t4.term_id = t5.term_id where t1.order_id = '".$order->id."' and t1.order_item_type='line_item' and t2.meta_key='_product_id' and t4.taxonomy='product_cat' ORDER BY `t5`.`name` ASC");
$array = array();
foreach($c1 as $data)
{
  if (!in_array($data->order_item_id , $array)) {
  $array[] = $data->order_item_id;
 }

}

//foreach ( $items as $item_id => $item ) :
foreach($array as $newdata) :
$item = $order->get_item($newdata);
if ( apply_filters( 'woocommerce_order_item_visible', true, $item ) ) {
    $product = $item->get_product();
    ?>
    <tr class="<?php echo esc_attr( apply_filters( 'woocommerce_order_item_class', 'order_item', $item, $order ) ); ?>">
        <td class="td" style="text-align:<?php echo $text_align; ?>; 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-' . ( is_rtl() ? 'left' : 'right' ) . ': 10px;" /></div>', $item );
            }

            // Product name
            echo apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false );

            // SKU
            if ( $show_sku && is_object( $product ) && $product->get_sku() ) {
                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 );

            wc_display_item_meta( $item );

            if ( $show_download_links ) {
                wc_display_item_downloads( $item );
            }

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

            // get category for admin email only
           if( $sent_to_admin ) {
                echo get_the_term_list( $product->id, 'product_cat', __( 'Categories', 'woocommerce' ).': ', ', ' );
            }

        ?></td>
        <td class="td" style="text-align:<?php echo $text_align; ?>; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;"><?php echo apply_filters( 'woocommerce_email_order_item_quantity', $item->get_quantity(), $item ); ?></td>
        <td class="td" style="text-align:<?php echo $text_align; ?>; vertical-align:middle; border: 1px solid #eee; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;"><?php echo $order->get_formatted_line_subtotal( $item ); ?></td>
    </tr>
    <?php
}

    if ( $show_purchase_note && is_object( $product ) && ( $purchase_note = $product->get_purchase_note() ) ) : ?>
    <tr>
        <td colspan="3" style="text-align:<?php echo $text_align; ?>; 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; ?>

   <?php endforeach; ?>

此处没有按类别对产品进行排序的选项。