WooCommerce Sensei 电子邮件自定义
Posted
技术标签:
【中文标题】WooCommerce Sensei 电子邮件自定义【英文标题】:WooCommerce Sensei Email customization 【发布时间】:2018-01-20 04:11:22 【问题描述】:当过滤器跨模板共享时,如何在一个模板中更改标题或文本?
插件代码(在 class-woothemes-sensei-email-learner-graded-quiz.php 中):
$this->subject = apply_filters( 'sensei_email_subject', sprintf( __( '[%1$s] You have completed a course', 'woothemes-sensei' ), get_bloginfo( 'name' ) ), $this->template);
我的自定义代码(在functions.php中):
add_filter( 'sensei_email_subject', 'my_custom_sensei_email_subject', 'class_woothemes_sensei_email_learner_graded_quiz' );
function my_custom_sensei_email_subject( $subject )
global $woothemes_sensei;
$subject = sprintf( __( '[%1$s] Your Evaluation has been graded', 'woothemes-sensei' ), get_bloginfo( 'name' ));
return $subject;
// This changes the title regardless of which template is being used.
【问题讨论】:
为糟糕的语法道歉 谢谢 LoicTheAztec! 对不起 - 是的,它应该有“ ); ”在最后 - 但那是在插件本身,而不是我的自定义代码。 【参考方案1】:在您的函数中,缺少一个参数,您可以看到该过滤器挂钩上有 2 个:$subject
和 $template
(这是可选的)。
因此,您需要在函数中添加第二个参数$template
。然后在 if 语句中,您只能针对正确的模板。
假设正确的目标模板段是:learner_graded_quiz
所以正确的代码应该是:
add_filter( 'sensei_email_subject', 'my_custom_sensei_email_subject', 10, 2 );
function my_custom_sensei_email_subject( $subject, $template )
// Only for your specific template
if( 'learner-graded-quiz' != $template ) return $subject;
$subject = sprintf( __( '[%1$s] Your Evaluation has been graded', 'woothemes-sensei' ), get_bloginfo( 'name' ));
return $subject;
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。
没有测试,因为我没有感觉……
您的代码中不需要
global $woothemes_sensei;
,因为它没有被使用。
【讨论】:
太棒了 - 谢谢。我替换你的 ' ! =' 和 '==' 现在完美了! 好的 - 非常感谢。你能帮助解决这个问题的另一个方面吗?我也在尝试从数组中提取数据,但还没有成功!以上是关于WooCommerce Sensei 电子邮件自定义的主要内容,如果未能解决你的问题,请参考以下文章
WooCommerce 中多个国家/地区的基于地理位置的自定义重定向
WooCommerce 中特定产品的基于地理位置的自定义重定向
如何在 WooCommerce 3 中添加自定义工作运输方式
php [WooCommerce Instagram]如果您想将其更改为缩略图或其他图像尺寸,请将此代码添加到您的“自定义功能”区域