插件不采用默认模板

时间:2018-02-19 05:23:44

标签: wordpress woocommerce

我想覆盖woocommerce电子邮件模板。首先,它检查我定义的模板文件夹中的模板。如果它没有找到任何,那么它应该从woocommerce文件夹中获取模板文件。但我的插件并没有从woocommerce文件夹中获取。问题是没有从woocommerce文件夹加载结帐,商店等模板。

add_filter( 'woocommerce_locate_template', array( $this, 'woo_locate_template' ), 999, 3);

public function woo_locate_template($template,$template_name,$template_path){
        if(in_array($template_name, $this->templates)){
          return $this->get_email_template_path($template_name);
        }
}

public function get_email_template_path($template_name){
  $email_template_path = TH_WEC_EMAIL_TEMPLATE_PATH.$template;
  if(file_exists($email_template_path)){
    return $email_template_path;
  }
  return '';
}


public function init_template_name(){
    $this->templates = array(
        'emails/email-header.php',
        'emails/email-footer.php',
        'emails/email-styles.php',
        'emails/admin-new-order.php',
        'emails/admin-cancelled-order.php',
        'emails/admin-failed-order.php',
        'emails/customer-completed-order.php',
        'emails/customer-inovice.php',
        'emails/customer-new-account.php',
        'emails/customer-on-hold-order.php',
        'emails/customer-processing-order.php',
        'emails/customer-refunded-order.php',
        'emails/customer-reset-password.php',
    );
}

2 个答案:

答案 0 :(得分:1)

错误是没有返回默认路径。也就是说,$ template

public function woo_locate_template($template,$template_name,$template_path){
    $_template = $template;
    if(in_array($template_name, $this->templates)){
        return $this->get_email_template_path($template_name);
    }
    return $_template;
}

答案 1 :(得分:0)

最简单的方法是将模板移动到活动模板目录中。 路径应为:模板根> woocommerce>电子邮件

然后从插件>中复制文件woocommerce>模板>电子邮件,放在上面的文件夹中并根据需要进行修改。

这样,将自动从WC文件夹中获取不在主题目录中的邮件模板。