Woocommerce提供了将占位符添加到电子邮件主题的选项。我想通过创建自定义占位符来扩展此功能,该占位符从woocommerce引力表单产品附加组件和woocommerce预订中获取信息。
我已经尝试为Woocommerce电子邮件通知主题代码创建其他变量/占位符, 进行一些更改以查看是否可以使它工作。另外,我尝试获取woocommerce元字段,但这也不起作用。
在此代码上,我无法获得与订单相关的预订:
// For woocommerce versions up to 3.2
add_filter( 'woocommerce_email_format_string' , 'filter_email_format_string', 20, 2 );
function filter_email_format_string( $string, $email ) {
// Get the instance of the WC_Order object
$booking = $get_order;
// Additional wanted placeholders in the array (find / replace pairs)
$additional_placeholders = array(
'{custom_one}' => $booking->get_start_date(),
);
// return the clean string with new replacements
return str_replace( array_keys( $additional_placeholders ), array_values( $additional_placeholders ), $string );
}
首先,您的主要问题是:
由于一个订单可以有很多预订(项目),因此您可以通过使用WordPressWPDB
类和可用方法的非常简单且轻巧的SQL查询来获取针对邮寄上级的预订ID(即订单ID)。
然后,您将能够从该订单的一次预订中获得开始日期,并将其设置为电子邮件通知主题的自定义占位符:
// Custom function to get the booking Ids from an order Id (with an SQL query)
function wc_get_booking_ids( $order_id ){
global $wpdb;
return $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'wc_booking' AND post_parent = %d", $order_id ) );
}
// For woocommerce versions up to 3.2
add_filter( 'woocommerce_email_format_string' , 'filter_email_format_string', 20, 2 );
function filter_email_format_string( $string, $email ) {
if( ! is_a($email->object, 'WC_Order') ) return; // Exit
$booking_ids = wc_get_booking_ids( $email->object->get_id() );
if( ! empty($booking_ids) ) {
// Get the instance of the WC_Booking object from one booking Id
$booking = new WC_Booking( reset($booking_ids) );
if( is_a($booking, 'WC_Booking') && method_exists($booking, 'get_start_date') ) {
// Additional placeholders array (one by line)
$custom_placeholders = array(
'{start_date}' => $start_date = $booking->get_start_date(),
);
$string = str_replace( array_keys( $custom_placeholders ), array_values( $custom_placeholders ), $string );
}
}
return $string;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试和工作。
我已成功更改了Woocommerce处理订单的电子邮件主题(使用此线程): 但我想发送处理订单电子邮件与新的主题后,订单状态改变,所以我遵循这一步调整主题等。 但只接受第一次电子邮件主题更改。有办法让它一起工作吗? 是否有权使用?
我希望管理电子邮件的电子邮件主题行根据产品类别进行更改。我看过所有类似的堆栈溢出问题,但没有一个适用于Woocommerce3.8.0(参见这个和这个)。 我有的是这个 我的代码只是返回新订单的默认电子邮件主题行(在woocommerce/settings/email中设置)。我想不通为什么我的函数不能识别类别名称。 谁能告诉我我的代码出了什么问题吗? 我将这段代码放在我的child-theme/
我添加了自定义状态: 我添加了自定义电子邮件: 我可以在电子邮件设置中看到电子邮件,在订单状态下拉菜单中看到状态。现在,每当订单状态更改为时,我就需要发送我的新电子邮件。过渡钩似乎从未开火。 我也试过: 这似乎也不起作用...有什么想法吗?
我在这个相关的答案中找到了对我的问题的部分和可行的答案: send-an-email-notification-when-order-status-changhe-fron-pendig-to-cancelled 我正在考虑使用提供的解决方案,但想看看我是否可以更改电子邮件通知,明确地说,“未决付款订单现在取消”,所以它不同于常规取消的订单。 我该怎么做?
我在我的WooCommerce安装中创建了一个自定义订单状态,称为Quote。 现在我想收到一封电子邮件,每当收到一个订单,已经给出了状态栏。我根据这篇有用的文章创建了一个插件:http://www.skyverge.com/blog/how-to-add-a-custom-woocommerce-email/ 我的插件基本上是从文章复制的,我只是更改了电子邮件的内容。我想改变的是什么触发了电子邮