将产品说明添加到WooCommerce电子邮件通知中

时间:2017-04-22 20:26:48

标签: php wordpress woocommerce orders email-notifications

如何将单个产品页面的产品描述/内容(不是简短描述)添加到WooCommerce 新订单电子邮件通知中?

我需要知道我产品的具体书面描述,因为大多数产品几乎相同。

1 个答案:

答案 0 :(得分:3)

在您定位特定电子邮件通知时,首先我们需要获取电子邮件ID 以定位“新订单”电子邮件通知。唯一的方法是先获取它并在全局变量中设置值。

然后,在隐藏在 woocommerce_order_item_meta_end 操作挂钩中的自定义功能中,我们专门针对新订单电子邮件通知显示产品说明。

以下是代码:

 ## Tested on WooCommerce 2.6.x and 3.0+

// Setting the email_is as a global variable
add_action('woocommerce_email_before_order_table', 'the_email_id_as_a_global', 1, 4);
function the_email_id_as_a_global($order, $sent_to_admin, $plain_text, $email ){
    $GLOBALS['email_id_str'] = $email->id;
}

// Displaying product description in new email notifications
add_action( 'woocommerce_order_item_meta_end', 'product_description_in_new_email_notification', 10, 4 );
function product_description_in_new_email_notification( $item_id, $item, $order = null, $plain_text = false ){

    // Getting the email ID global variable
    $refNameGlobalsVar = $GLOBALS;
    $email_id = $refNameGlobalsVar['email_id_str'];

    // If empty email ID we exit
    if(empty($email_id)) return;

    // Only for "New Order email notification"
    if ( 'new_order' == $email_id ) {

        if( version_compare( WC_VERSION, '3.0', '<' ) ) { 
            $product_id = $item['product_id']; // Get The product ID (for simple products)
            $product = wc_get_product($item['product_id']); 
        } else {
            $product = $item->get_product();

            if( $product->is_type('variation') ) {
                $product = wc_get_product( $item->get_product_id() );
            }
        }

        // Get the Product description (WC version compatibility)
        if ( method_exists( $item['product'], 'get_description' ) ) {
            $product_description = $product->get_description(); // for WC 3.0+ (new)
        } else {
            $product_description = $product->post->post_content; // for WC 2.6.x or older
        }

        // Display the product description
        echo '<div class="product-description"><p>' . $product_description . '</p></div>';
    }
}

此代码包含活动子主题(或主题)的function.php文件或任何插件文件。

此代码经过测试并有效。

  

woocommerce_order_item_meta_end动作挂钩中的代码更新和错误说明:

     

<强> PHP Warning for woocommerce_order_item_meta_end (Mike Joley)