如果订单具有此特定类别,请更改Woocommerce电子邮件主题



我只想知道如果订单具有特定类别(如(预购(,是否可以更改电子邮件主题。我想将 PO 放在开头(PO 新客户订单 #0000(,然后客户收到默认电子邮件主题的所有其他订单(新客户订单 #0000(。

add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);
function change_admin_email_subject( $subject, $order ) {
    global $woocommerce;
    global $product;       
    if ( has_term( 'preorder', $product->ID ) ) {           
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
        $subject = sprintf( '[%s]New customer order (# %s) from %s %s', $blogname, $order->id, $order->billing_first_name, $order->billing_last_name );
    } 
    return $subject;
}

注意:我只是将此代码复制到某个地方。

这可以通过这种方式完成,进行一些小的更改:

add_filter('woocommerce_email_subject_new_order', 'custom_admin_email_subject', 1, 2);
function custom_admin_email_subject( $subject, $order ) {
    $backordered = false;
    foreach($order->get_items() as $item_id => $item ){
        if ( has_term( 'preorder', 'product_cat' , $item->get_product_id() ) ) { 
            $backordered = true;
            break;
        }
    } 
    if ( $backordered ) {  
        $subject = sprintf( '[PO]New customer order (# %s) from %s %s', $order->get_id(), $order->get_billing_first_name(), $order->get_billing_last_name() );
    } 
    return $subject;
}

代码进入函数.php活动子主题(或活动主题(的文件。经过测试并工作。


或者可以在没有产品类别的情况下以这种方式完成,检查产品是否缺货:

add_filter('woocommerce_email_subject_new_order', 'custom_admin_email_subject', 1, 2);
function custom_admin_email_subject( $subject, $order ) {
    $backordered = false;
    foreach($order->get_items() as $item_id => $item ){
        $product = $item->get_product();
        if( $product->get_backorders() == 'yes' && $product->get_stock_quantity() < 0 ){
            $backordered = true;
            break;
        }
    }
    if ( $backordered ) {
        $subject = sprintf( '[PO]New customer order (# %s) from %s %s', $order->get_id(), $order->get_billing_first_name(), $order->get_billing_last_name() );
    }
    return $subject;
}

代码进入函数.php活动子主题(或活动主题(的文件。经过测试并工作。

使用这个:

function change_admin_email_subject( $subject, $order ) {
    // Get all order items
    $items = $order->get_items();
    $found = false;
    // Loop through the items
    foreach ( $items as $item ) {
        $product_id = $item['product_id'];
        // get the categories for current item
        $terms = get_the_terms( $product_id, 'product_cat' );
        // Loop through the categories to find if 'preorder' exist.
        foreach ($terms as $term) {
            if($term->slug == 'preorder'){
                $subject = 'PO '. $subject;
                $found = true;
                break;
            }
        }
        if($found == true){
            break;
        }
    }
    return $subject;
}

相关内容

  • 没有找到相关文章

最新更新