我们正在使用WooCommerce Memberships插件与WooCommerce网站销售健身教学视频。
我们为客户销售的每个视频创建了一个WooCommerce产品,并为该产品创建了一个WooCommerce Membership,该产品在产品售出时激活。
每个视频都在单个WordPress页面上,根据匹配的会员计划进行限制。
我的问题是:
如何向客户发送与他们购买的产品相关的电子邮件通知,其中包含包含视频的Wordpress页面的URL?
我知道我们可以override WooCommerce template emails/customer-completed-order.php
,但我不知道如何根据WooCommerce输出自定义字符串“包含视频页面的网址”购买产品。
您可以根据购买的WooCommerce产品帮助输出自定义字符串(包含视频页面的URL)吗?
由于
答案 0 :(得分:1)
您可以在不使用专用WooCommerce动作挂钩编辑WooCommerce模板的情况下实现它,分2步(如果步骤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文件或任何插件文件中。
答案 1 :(得分:0)
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中尝试此代码段并进行必要的修改。