【问题标题】:Customize email subject in WooCommerce with vendor store-name (Dokan)使用供应商商店名称 (Dokan) 在 WooCommerce 中自定义电子邮件主题
【发布时间】:2021-05-05 16:52:02
【问题描述】:

我们发现了这个问题https://wordpress.stackexchange.com/questions/320924/woocommerce-order-processing-email-subject-not-changing,它运行良好。我们现在想通过在订单完成邮件中显示订单上的供应商来扩展此功能。

但我们无法输出供应商商店名称。

我们的代码有明显的错误吗?

add_filter('woocommerce_email_subject_customer_completed_order',

'change_completed_email_subject', 1, 2 );
function change_completed_email_subject( $subject, $order ) {
global $woocommerce;

// Order ID 
$order->get_items();
     
// Author id
$author_id = $product->post->post_author;
        
// Shopname
$vendor = dokan()->vendor->get( $author_id );
$shop_name = $vendor->get_shop_name();

// Blogname
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);

// Output subject
$subject = sprintf( '%s, Deine %s Bestellung (#%s) wurde versendet! Vendor: %s', $order->billing_first_name, $blogname, $order->get_order_number(), $shop_name );
return $subject;
}

更新:

我已经尝试通过$shop_name = dokan()->vendor->get( $author_id )->get_shop_name(); 获取名称,但没有成功。

【问题讨论】:

    标签: php wordpress woocommerce email-notifications dokan


    【解决方案1】:
    • 不需要使用全局$woocommerce
    • 你使用了$order->get_items();,但什么也不做
    • $product 未定义
    • 使用$order->get_billing_first_name() VS $order->billing_first_name

    所以你得到:

    function filter_woocommerce_email_subject_customer_completed_order( $subject, $order ) {
        // Empty array
        $shop_names = array();
        
        // Loop through order items
        foreach ( $order->get_items() as $item ) {
            // Get product object
            $product = $item->get_product();
    
            // Author id
            $author_id = $product->post->post_author;
            
            // Shopname
            $vendor = dokan()->vendor->get( $author_id );
            $shop_name = $vendor->get_shop_name();
            
            // OR JUST USE THIS FOR SHOPNAME
            // Shop name
            // $shop_name = dokan()->vendor->get( $author_id )->get_shop_name();
            
            // NOT in array
            if ( ! in_array( $shop_name, $shop_names ) ) {
                // Push to array
                $shop_names[] = $shop_name;
            }
        }
    
        // Blogname
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
    
        // Set subject
        $subject = sprintf( __( '%s, Deine %s Bestellung (#%s) wurde versendet! Vendor: %s', 'woocommerce' ), $order->get_billing_first_name(), $blogname, $order->get_order_number(), implode( ', ', $shop_names ) );
    
        // Return
        return $subject;
    }
    add_filter( 'woocommerce_email_subject_customer_completed_order', 'filter_woocommerce_email_subject_customer_completed_order', 10, 2 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-20
      • 2021-08-03
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      相关资源
      最近更新 更多