php - 根据用户角色将附件添加到 WooCommerce 新用户注册电子邮件
问题描述
我想在 WooCommerce 的新用户注册电子邮件中添加两个 pdf 文件。
因为我有两个特定的用户角色customer
和seller
. 我想向所有新卖家发送来自路径的两个 pdf 文件$path1
和来自路径$path3
的所有新客户两个 pdf 文件$path2
和$path3
.
我在我的functions.php
function attach_to_email ( $attachments, $userrole ) {
$root = ABSPATH;
$path1 = $root . '/media/AGB H.pdf';
$path2 = $root . '/media/AGB K.pdf';
$path3 = $root . '/media/W.pdf';
if ( $userrole === 'seller' ) {
$attachments[] = $path1;
$attachments[] = $path3;
} else {
$attachments[] = $path2;
$attachments[] = $path3;
}
return $attachments;
}
add_filter( 'woocommerce_email_attachments', 'attach_to_email', 10, 2 );
在我打电话给卖家的电子邮件模板中:
do_action( 'woocommerce_email_attachments', null, 'seller' );
但在函数中,我总是输入 else 部分而不是 if 部分。此外,现在所有的电子邮件都附有else-files,而不仅仅是注册电子邮件。有任何想法吗?
解决方案
要仅将附件分配给注册电子邮件,您可以使用:
- ,
$email_id
其中这等于customer_new_account
对于链接到主题的附件路径,您可以使用:
get_stylesheet_directory()
对于儿童主题get_template_directory()
对于父主题- 我还建议不要在 pdf 文件的文件名中使用空格
然后,您可以根据用户角色分配正确的附件
所以你得到:
function filter_woocommerce_email_attachments( $attachments, $email_id, $object, $email_object = null ) {
// Use get_stylesheet_directory() for a child theme
// Use get_template_directory() for a parent theme
$path_1 = get_template_directory() . '/my-file-1.pdf';
$path_2 = get_template_directory() . '/my-file-2.pdf';
$path_3 = get_template_directory() . '/my-file-3.pdf';
// Customer new account email
if ( isset( $email_id ) && $email_id === 'customer_new_account' ) {
// Get user role(s)
$roles = (array) $object->roles;
// Seller
if ( in_array( 'seller', $roles ) ) {
$attachments[] = $path_1;
$attachments[] = $path_3;
// Customer
} elseif ( in_array( 'customer', $roles ) ) {
$attachments[] = $path_2;
$attachments[] = $path_3;
}
}
return $attachments;
}
add_filter( 'woocommerce_email_attachments', 'filter_woocommerce_email_attachments', 10, 4 );
代码进入functions.php
您的活动主题的文件中。经测试WooCommerce 5.0.0
推荐阅读
- pandas - 从 CSV 文件可视化财务数据
- java - 尝试从文件中读取整数并将其存储在变量中时出现输入不匹配错误
- flutter - 如何在 textField 中添加容器?
- python - 如何为新版本的空闲安装 pygame?(视窗)
- docusignapi - 在将 DocuSign 与 Salesforce 集成时收到错误
- react-native - useQuery onCompleted 后更新状态...错误
- c# - Using Entity Framework Core 3.1 with Windows Application or Console Application
- xml - 是否可以将一个属性与 XSD 中的另一个属性相关联?
- ios - App Store Connect 是否会跟踪小部件在 iOS 14 上的安装情况?
- ruby-on-rails - 渲染“新”后验证错误消失