当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce“订单完成”电子邮件中添加自定义产品字段

宗政文彬
2023-03-14

有什么方法我可以添加内容从一个自定义产品字段到‘订单完成'WooCommerce电子邮件?

我已经将此代码添加到functions.php中,以便将自定义字段保存到产品元信息中。

//1.1 Display Activation Instructions field in admin
add_action('woocommerce_product_options_inventory_product_data', 'woocommerce_product_act_fields');
function woocommerce_product_act_fields(){
    global $woocommerce, $post;
    echo '<div class="product_custom_field">';
    woocommerce_wp_text_input(
        array(
            'id' => '_act',
            'label' => __('Activation Instructions', 'woocommerce'),
            'desc_tip' => 'true',
            'description' => 'Enter the Activation Instructions Link.'
        )
    );    
    echo '</div>';
}

//1.2 Save Activation Instructions field in product meta
add_action('woocommerce_process_product_meta', 'woocommerce_product_act_field_save');
function woocommerce_product_act_field_save($post_id){
    $woocommerce_act_product_text_field = $_POST['_act'];
    if (!empty($woocommerce_act_product_text_field))
        update_post_meta($post_id, '_act', esc_attr($woocommerce_act_product_text_field));
}
add_action( 'woocommerce_email_customer_details', 'bbloomer_add_content_specific_email', 20, 4 );
function bbloomer_add_content_specific_email( $order, $sent_to_admin, $plain_text, $email ) {
   if ( $email->id == 'customer_completed_order' ) {
      echo '<h2>Activation & Download Instructions</h2><p style="margin-bottom:35px;">Please refer to 
      our <a href="https://example.com/activation-guides/">Activation Guides</a> for detailed 
      activation and download instructions.</p>';
   }
}

上面的代码工作得很好,它显示了所有“订单完成”电子邮件的自定义文本。

但是,我想用自定义产品字段数据替换文本的URL部分。每个产品的数据都不同。

谢了。

共有1个答案

金晗日
2023-03-14

使用:get_post_meta检索给定post ID的post元字段。

//1.1 Display Activation Instructions field in admin
function woocommerce_product_act_fields() {
    echo '<div class="product_custom_field">';

    woocommerce_wp_text_input(
        array(
            'id' => '_act',
            'label' => __('Activation Instructions', 'woocommerce'),
            'desc_tip' => 'true',
            'description' => 'Enter the Activation Instructions Link.'
        )
    );

    echo '</div>';
}
add_action('woocommerce_product_options_inventory_product_data', 'woocommerce_product_act_fields', 10, 0 );

//1.2 Save Activation Instructions field in product meta
function woocommerce_product_act_field_save( $product ) {
    if( isset($_POST['_act']) ) {
        $product->update_meta_data( '_act', sanitize_text_field( $_POST['_act'] ) );
    }
}
add_action( 'woocommerce_admin_process_product_object', 'woocommerce_product_act_field_save', 10, 1 );

//2 Add url to email
function woocommerce_product_act_email( $order, $sent_to_admin, $plain_text, $email ) {
    if ( $email->id == 'customer_completed_order' ) {
        $items = $order->get_items();

        echo '<h2>Activation & Download Instructions</h2>';

        foreach ( $items as $item ) {
            // Get product ID
            $product_id = $item->get_product_id();

            // Get product name
            $product_name = $item->get_name();

            // Get post meta
            $url = get_post_meta( $product_id, '_act', true);

            if ( $url ) {
                echo '<p style="margin-bottom:35px;">For ' . $product_name . ' follow <a href="' . $url. '"> these instructions</a></p>';
            }
        }
    }
}
add_action( 'woocommerce_email_customer_details', 'woocommerce_product_act_email', 20, 4 );
 类似资料:
  • 电子邮件屏幕抓取显示文本应该去哪里 我尝试将此添加到functions.php中,但它是2015年的,用于“处理”未“完成”的电子邮件: 我已经尝试过了,但这是几年前的事情,并没有完成我需要的:将产品描述添加到WooCommerce电子邮件通知中

  • 我有一个插件管理我的货件与两个自定义状态:等待-装运和装运。 我尝试添加一个电子邮件发送时,订单传递到发货。 我在Stack Overflow:Woocommerce退款电子邮件中发现了这一点,但我可以知道它是如何工作的 下面是我的插件文件代码: 我用下面的helgatheviking和Adrien Leber的建议更新了我的代码 和我的班级: 当我改变我的订单状态时,什么也没有发生!我的触发函数

  • 所以我已经为一个在线商店做了一个自定义管理订单模板(重新设计和重新安排了很多)。我已经知道“show image=>false/true”这不是我要找的答案,因为我完全改变了我的电子邮件模板中的一切。现在我的问题是不知道如何展示产品形象。 欢迎任何帮助,因为我是编码的新手。 编辑:这是我现在存在的错误: 下面是我的代码:

  • 在Woocommerce中,我需要在完成的订单电子邮件上打印一个自定义域。 该模板在我的主题Woocommerce/Emails文件夹中是完全唯一的,因为默认模板不能满足我的需要。 因此,我试图显示以下内容:标题、数量和两个自定义字段 这需要包含在customer-completed-order.php电子邮件模板中,但我不确定打印它需要什么语法。 我在谷歌上找到了一些东西,但它不起作用:

  • 如果客户下了一个订单,我想添加相应的电子邮件通知每个订单项目到新的订单电子邮件通知。 如何将产品自定义域中的收件人添加到Woocommerce新订单电子邮件通知中?