我在名为 course-date 的商品中创建了自定义字段。我把它作为一个日期,例如1月30日。这是我在电子邮件中的内容,但没有任何显示..我错过了什么?使用下面的新代码段编辑的代码
<?php
/**
* Customer processing order email
*
* @author WooThemes
* @package WooCommerce/Templates/Emails
* @version 2.4.0
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
?>
<?php
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$product_variation_id = $item['variation_id'];
$course_date=get_post_meta($product_id, 'course-date', true);
//Note $course_date will get overwritten if there are more than one items in the order.
}
?>
<?php do_action('woocommerce_email_header', $email_heading); ?>
<p>This email is to notify you of your recent registration for the <b>Level 1 - Think and Grow Rich Institute Course</b>!</p>
<p>You are registered to attend on:</p>
<p><?php printf( __( '<b>Registration ID:</b> %s', 'woocommerce' ), $order->get_order_number() ); ?></p>
<p><b>Course Registration Date:</b> <?php echo get_post_meta($post->id, 'course-date', true); ?></p>
<p><b>Time:</b> 8am Registration - 9am Event Begins (<a href="http://allfansnomoney.com/thinkandgrowrich/tentative-schedule/" target="_blank">See Full Schedule</a>)</p>
<p><b>Location:</b> 240 Belfield Rd, Toronto, ON M9W 1H3</p>
<p>If you have any questions please contact us by e-mail: <a href="mailto:contact@thinkandgrowrichinstitute.com">contact@thinkandgrowrichinstitute.com</a>.</p>
<p>Sincerely,<BR/>
The Think and Grow Rich Institute Team</p><BR/>
<p><em><b>"Whatever The Mind Can Conceive and Believe, It Will Achieve."</b> - Napoleon Hill</em></p>
<?php do_action( 'woocommerce_email_before_order_table', $order, $sent_to_admin, $plain_text ); ?>
<?php do_action( 'woocommerce_email_after_order_table', $order, $sent_to_admin, $plain_text ); ?>
<?php do_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text ); ?>
<?php do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text ); ?>
<?php do_action( 'woocommerce_email_footer' ); ?>
答案 0 :(得分:3)
希望您能从这个答案中了解更多信息,它会增加您对WooCommerce的了解。
对于您发送的“客户处理订单电子邮件”的摘录。
系统无法在此处找到$ _product-&gt; id的值。所以它不起作用。
您必须通过在初始测试电子邮件中打印产品ID本身来调试它。
如果您无法获得产品ID。这里有更多信息。
订单可能包含多个产品。因此,使用元字段查找产品可能会很麻烦,尤其是当您对哪个产品应该显示元字段的问题时。
简单的方法是使用给定的对象$ order从此对象中检索订单ID,然后找到按此顺序关联的所有产品,然后找到这些产品的元字段值。
<?php
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$product_variation_id = $item['variation_id'];
$course_date=get_post_meta($product_id, 'course-date', true);
if(isset($course_date) && $course_date!=""){
echo "<p><b>Course Registration Date:</b>".$course_date."</p>";
}
}
?>
让我们知道这是否能让您对此问题有所了解。
答案 1 :(得分:2)
这是一个未经测试的示例,说明如何将字符串添加到&#34; customer_processing_email&#34;不覆盖模板。您可以将此代码添加到主题functions.php
中,文本应显示在订单表之前。
add_action( 'woocommerce_email_order_details', 'kia_custom_order_details', 5, 4 );
function kia_custom_order_details( $order, $sent_to_admin, $plain_text, $email ){
if( $email->id == "customer_processing_order" ){
$course_date = null;
// borrowing the loop from WisdmLabs's answer
$items = $order->get_items();
foreach ( $items as $item ) {
$product_name = $item['name'];
$product_id = $item['product_id'];
$product_variation_id = $item['variation_id'];
$course_date = get_post_meta($product_id, 'course-date', true);
if( $course_date != '' ) break; //break out of the loop if we find a course date
}
if( $course_date && $plain_text ){
echo "Course Registration Date: " . $course_date . "\n\n";
} else if( $course_date && ! $plain_text ){
echo "<p><b>Course Registration Date:</b> " . $course_date . "</p>" . "/n/n";
}
}
}
不要忘记富文本与纯文本电子邮件的不同格式。我将剩余文本的大部分格式留给了您,因为重要的部分是查找/打印课程日期元。
我仍然认为在这里使用单独的电子邮件是最好的方法,但据我所知,只是错过了在正确位置回显$course_date
。