我们正在使用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中尝试此代码段,并进行必要的修改。