我试图将产品库存值添加到Woocommerce中的低库存水平通知电子邮件中。
电子邮件通知代码位于line 386 of WC_Emails class,但是,它没有操作,因此我不确定在不更改核心文件的情况下添加它的最佳方法。
答案 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。他们可能只是接受它并使其成为核心的一部分。