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]如果您想将其更改为缩略图或其他图像尺寸,请将此代码添加到您的“自定义功能”区域

如何在Mac上安装可视化系统优化工具Sensei 1.0.0

php Aense主题的Sensei集成