WooCommerce 如何在已完成订单邮件的产品标题下添加产品短描述
实现WooCommerce已完成订单邮件展示产品短描述的方案
以下提供两种可直接落地的实现方式,优先推荐第一种,无需修改核心模板,兼容性更强。
方法1:添加钩子代码实现(推荐)
将以下代码添加到当前使用主题/子主题的functions.php文件中,也可以通过自定义代码插件引入:
add_action( 'woocommerce_order_item_meta_start', 'wc_add_short_desc_to_completed_email', 10, 4 ); function wc_add_short_desc_to_completed_email( $item_id, $item, $order, $plain_text ) { // 仅对已完成订单的邮件通知生效 if ( ! $order || $order->get_status() !== 'completed' || ! is_email() ) { return; } $product = $item->get_product(); if ( empty( $product ) ) { return; } $short_desc = $product->get_short_description(); if ( ! empty( $short_desc ) ) { // 可自定义style部分的样式匹配邮件整体风格 echo '<div style="margin: 6px 0 10px;color: #666;font-size: 14px;">' . wp_kses_post( $short_desc ) . '</div>'; } }
添加完成后发送测试邮件验证效果即可,该方式不会因为主题、WooCommerce版本更新被覆盖。
方法2:修改邮件模板实现
如果需要更灵活的排版控制,可以直接调整邮件模板文件:
- 首先在当前主题目录下创建
woocommerce/emails文件夹,已有则跳过 - 复制WooCommerce插件目录下
wp-content/plugins/woocommerce/templates/emails/email-order-items.php文件到上述新建的文件夹中 - 打开复制后的文件,找到输出产品名称的代码段,一般为
echo wp_kses_post( apply_filters( 'woocommerce_order_item_name', $item->get_name(), $item, false ) ); - 在该代码段下方添加如下代码:
$product = $item->get_product(); if ( $product && ! empty( $product->get_short_description() ) ) { echo '<p style="margin: 8px 0 12px;font-size: 0.9em;color: #555;">' . wp_kses_post( $product->get_short_description() ) . '</p>'; }
注意:修改模板前请做好备份,WooCommerce大版本更新后如果模板结构变动,需要同步更新自定义的模板文件避免兼容问题。
内容的提问来源于stack exchange,提问作者Momir Novakovic
相关产品推荐
相关产品推荐

