自定义订单完成的电子邮件通知:显示产品自定义字段



我们正在使用WooCommerce会员插件与WooCommerce网站出售健身教学视频。

我们为我们的客户销售的每个视频创建了一个WooCommerce产品,也是匹配该产品的WooCommerce会员资格,该产品在出售产品时被激活。

每个视频都在单个WordPress页面上,受匹配成员计划的限制。

我的问题是:
如何向客户发送与他们购买的产品有关的电子邮件通知,其中包含包含视频的WordPress页面的URL?

我知道我们可以覆盖WooCommerce模板emails/customer-completed-order.php,但是我不知道如何根据购买的WooCommerce产品来输出" <strong">"包含url到"视频"页面"。p>您可以根据购买哪些WooCommerce产品来帮助输出自定义字符串(包含视频页面的URL)?

谢谢

您可以在2个步骤中使用专用的WooCommerce Action挂钩编辑WooCommerce模板(如果尚未完成步骤1)::

  • 在管理产品页面中创建/保存自定义字段。

  • 在您的电子邮件中渲染指向相关视频页面的链接" 已完成"订购电子邮件通知。

这是该功能和测试的代码:

# 1) Creating/Saving a custom field in the admin product pages general setting metabox.
// Inserting product general settings custom field (set the related video page ID)
add_action( 'woocommerce_product_options_general_product_data', 'product_general_settings_custom_field_create' );
function product_general_settings_custom_field_create() {
    echo '<div class="options_group">';
    woocommerce_wp_text_input( array(
        'type'              => 'text',
        'id'                => 'video_page_id', // we save the related page ID
        'label'             => __( 'Video page ID', 'woocommerce' ),
        'placeholder'       => '',
        'description'       => __( 'Insert page ID', 'woocommerce' ),
    ) );
    echo '</div>';
}
// Saving the custom field value when submitted (saving the related video page ID)
add_action( 'woocommerce_process_product_meta', 'product_general_settings_custom_field_save' );
function product_general_settings_custom_field_save( $post_id ){
    $wc_field = $_POST['video_page_id'];
    if( !empty( $wc_field ) )
        update_post_meta( $post_id, 'video_page_id', esc_attr( $wc_field ) );
}
# 2) Rendering the related video page link in your email "completed" order email notification.
// Displaying in completed order email notification the related video page permalink
add_action('woocommerce_order_item_meta_end', 'displaying_a_custom_link_in_completed_order_email_notification', 10, 4);
function displaying_a_custom_link_in_completed_order_email_notification($item_id, $item, $order, $html){
    // For completed orders status only
    if ( $order->has_status('completed') ){
         // Get the custom field value for the order item
        $page_id = get_post_meta( $item['product_id'], 'video_page_id', true);
        $page_id = '324';
        // Get the page Url (permalink)
        $page_permalink = get_permalink( $page_id );
        // Get the page title (optional)
        $page_title = get_the_title( $page_id );
        // Displaying the page link
        echo '<br><small>' . __( 'Watch your video: ', 'woocommerce' ). '<a href="'.$page_permalink.'">' . $page_title . '</a></small>';
    }
}

代码在您的活动子主题(或主题)或任何插件文件中的function.php文件中。

function render_product_description($item_id, $item, $order){
    $_product = $order->get_product_from_item( $item );
    echo "<a href='.$_product->post->video_url.'>" . $_product->post->video_url. "</a>"; 
}
add_action('woocommerce_order_item_meta_end', 'render_product_description',10,3);

请在主题的functions.php中尝试此代码段,并进行必要的修改。

相关内容

  • 没有找到相关文章

最新更新