将库存值添加到低库存级别的电子邮件中

时间:2015-01-05 19:04:02

标签: php woocommerce

我试图将产品库存值添加到Woocommerce中的低库存水平通知电子邮件中。

电子邮件通知代码位于line 386 of WC_Emails class,但是,它没有操作,因此我不确定在不更改核心文件的情况下添加它的最佳方法。

2 个答案:

答案 0 :(得分:1)

这封邮件只是一个挂钩的功能。您应该能够删除它,然后添加自己的。 100%未经测试,因此使用风险自负。

我不能100%确定如何从woocommerce_low_stock_notification删除回调,因为我不确定如何访问WC_Emails实例。

function so_27786112_remove_notification(){
    $emails = WC_Emails::instance();
    remove_action( 'woocommerce_low_stock_notification', array( $emails, 'low_stock' ) );
}
add_action( 'woocommerce_init', 'so_27786112_remove_notification' );

但正如安德鲁建议您可以复制low_stock()回调并按照您的喜好对其进行修改。我只是简单地将一个自定义函数添加到适当的钩子中。我实际上只更改了$message等式以使用get_stock_quantity()方法。

function so_27786112_stock_notification( $product ) {

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

    $subject = apply_filters( 'woocommerce_email_subject_low_stock', sprintf( '[%s] %s', $blogname, __( 'Product low in stock', 'woocommerce' ) ), $product );

    $sku = ($product->sku) ? '(' . $product->sku . ') ' : '';

    if ( ! empty( $product->variation_id ) )
        $title = sprintf(__( 'Variation #%s of %s', 'woocommerce' ), $product->variation_id, get_the_title($product->id)) . ' ' . $sku;
    else
        $title = sprintf(__( 'Product #%s - %s', 'woocommerce' ), $product->id, get_the_title($product->id)) . ' ' . $sku;

    $qty = $product->get_stock_quantity();
    $message = $title . sprintf( __( ' has %s remaining in stock.', $qty ) );

    //  CC, BCC, additional headers
    $headers = apply_filters('woocommerce_email_headers', '', 'low_stock', $product);

    // Attachments
    $attachments = apply_filters('woocommerce_email_attachments', array(), 'low_stock', $product);

    // Send the mail
    wp_mail( get_option('woocommerce_stock_email_recipient'), $subject, $message, $headers, $attachments );
}
add_action( 'woocommerce_low_stock_notification', 'so_27786112_stock_notification' );

如果第一部分不起作用,您应该收到2封电子邮件。

答案 1 :(得分:0)

一种选择是创建扩展WC_Emails类的自己的类。然后将low_stock()方法从它们的类复制到你的类中,这将覆盖它们的功能。这样你可以根据需要调整自己的功能,但你不会编辑核心文件。

另一种选择是添加您需要的过滤器并将拉取请求提交回WooThemes。他们可能只是接受它并使其成为核心的一部分。