WooCommerce 老师电子邮件定制

WooCommerce Sensei Email customization

当过滤器跨模板共享时,如何在一个模板中更改标题或文本?

插件代码(在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.

在您的函数中,缺少一个参数,如您所见,过滤器挂钩上有 2 个:$subject$template(可选)。

因此您需要在函数中添加第二个参数 $template。然后在 if 语句中,您只能定位正确的模板。

假设正确的目标模板 slug 是: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 文件或任何插件文件。

没有测试,因为我没有老师…

You don't need in your code global $woothemes_sensei; as it's not used.