将订购的产品名称添加到管理新订单电子邮件WooCommerce

时间:2019-05-01 作者:Nick Taylor

我正在尝试获取所有订购产品的名称,这些名称用逗号分隔,并添加到发送给管理员的新订单电子邮件的主题行中。

以下是我的一些代码,但它只添加了第一个产品名称,而不是全部:

add_filter(\'woocommerce_email_subject_new_order\', \'change_admin_email_subject\', 1, 2);

function change_admin_email_subject( $subject, $order ) {
global $woocommerce;

    $items = $order->get_items();
    foreach ( $items as $item ) {
        $product_name = $item->get_name();
    }

$blogname = wp_specialchars_decode(get_option(\'blogname\'), ENT_QUOTES);

$subject = sprintf( \'[%s] New Customer Order (#%s) of \'.$product_name.\' from %s %s\', $blogname, $order->id, $order->billing_first_name, $order->billing_last_name);

return $subject;
}

1 个回复
最合适的回答,由SO网友:LoicTheAztec 整理而成

由于Woocommerce 3,您的实际代码有点过时。在以下内容中,您将在电子邮件主题中获得所有产品名称(coma分隔)。

add_filter(\'woocommerce_email_subject_new_order\', \'change_admin_email_subject\', 10, 2);
function change_admin_email_subject( $subject, $order ) {
    $products_names = array();

    foreach ( $order->get_items() as $item ) {
        $products_names[] = $item->get_name();
    }

    return sprintf( \'[%s] New Customer Order (#%s) of %s from %s %s\', 
        wp_specialchars_decode(get_option(\'blogname\'), ENT_QUOTES), 
        $order->get_id(), 
        implode(\', \', $products_names),
        $order->get_billing_first_name(),  
        $order->get_billing_last_name()
    );
}

相关推荐

无法成功执行AJAX脚本以调用函数.php特定的函数。使用XAMPP本地主机进行测试

在过去的12个小时里,我一直在努力掌握AJAX,但我正在慢慢失去它。如何通过表单或任何其他方式传递两个基本输入日期,而不是刷新页面,并让它执行包含JS脚本的PHP函数?在我将值传递给脚本之前,我只想回显我传递的数据数组,看看是否。。。ajax正在发挥作用。表单按钮只会刷新页面,所以我认为AJAX根本没有发挥作用。我正在试穿https://localhost 对于xampp。我不知道停止刷新并在按钮上插入ajax脚本缺少了什么。欣赏任何见解。功能。php<?php add_action(\'w