如何在WooCommerce邮件中自动插入动态ID的Woo QR短代码?
如何在WooCommerce自动邮件中自动插入Woo QR商品二维码
完全可以实现自动填充商品ID并插入Woo QR短代码,以下是两种实用方案:
方案1:直接修改管理员新订单邮件模板
你已经有了admin-new-order.php模板文件,在合适位置插入代码即可,推荐放在订单详情展示之后:
找到模板中的这一行:
do_action( 'woocommerce_email_order_details', $order, $sent_to_admin, $plain_text, $email );
在它后面添加以下代码:
<!-- 商品二维码区域 --> <h3><?php esc_html_e('商品二维码', 'woocommerce'); ?></h3> <?php foreach( $order->get_items() as $item ) { $product = $item->get_product(); if( $product ) { $product_id = $product->get_id(); $product_title = $product->get_name(); $product_price = $product->get_price(); // 生成并执行Woo QR短代码 $qr_shortcode = '[wooqr id="' . esc_attr($product_id) . '" title="' . esc_attr($product_title) . '" price="' . esc_attr($product_price) . '"]'; echo do_shortcode( $qr_shortcode ); echo '<br><br>'; } } ?>
这段代码会自动遍历订单内的所有商品,为每个商品生成专属二维码并插入邮件。
方案2:使用WooCommerce钩子(推荐)
这种方法无需修改模板文件,避免WooCommerce版本更新后丢失修改,只需在主题的functions.php文件中添加以下代码:
add_action( 'woocommerce_email_after_order_details', 'add_wooqr_to_admin_order_email', 10, 4 ); function add_wooqr_to_admin_order_email( $order, $sent_to_admin, $plain_text, $email ) { // 仅针对管理员新订单邮件生效 if( $email->id !== 'admin_new_order' ) return; echo '<h3>' . esc_html__('商品二维码', 'woocommerce') . '</h3>'; foreach( $order->get_items() as $item ) { $product = $item->get_product(); if( $product ) { $product_id = $product->get_id(); $product_title = $product->get_name(); $product_price = $product->get_price(); $qr_shortcode = '[wooqr id="' . esc_attr($product_id) . '" title="' . esc_attr($product_title) . '" price="' . esc_attr($product_price) . '"]'; echo do_shortcode( $qr_shortcode ); echo '<br><br>'; } } }
注意事项
- 确认Woo QR插件的短代码
id参数对应商品ID(你的示例中id="2100"即为商品ID,此逻辑成立) - 如果短代码的
title和price参数可省略,可简化为[wooqr id="' . esc_attr($product_id) . '"],具体以插件支持为准 - 代码中用
esc_attr()对参数转义,避免安全风险
内容的提问来源于stack exchange,提问作者Cerealkey
相关产品推荐
相关产品推荐

