如何将文件附加到WordPress预订插件发送的电子邮件?

如何将文件附加到WordPress预订插件发送的电子邮件?,wordpress,plugins,updates,Wordpress,Plugins,Updates,我正在使用WordPress插件接受在线预订(预约时间预订),我需要在提交预订请求后发送的电子邮件中附加一个文件(带有一般预订条款的PDF文件)。我已经通过以下方式编辑对wp_mail()函数的调用应用了一个解决方案: wp_mail(trim($payer_email), $subject, $message, "From: ".$from."\r\n". $content_type. "X-Mailer: PHP/" . phpversion(),

我正在使用WordPress插件接受在线预订(预约时间预订),我需要在提交预订请求后发送的电子邮件中附加一个文件(带有一般预订条款的PDF文件)。我已经通过以下方式编辑对wp_mail()函数的调用应用了一个解决方案:

wp_mail(trim($payer_email), $subject, $message, 
         "From: ".$from."\r\n". 
          $content_type. "X-Mailer: PHP/" . phpversion(), 
          array(WP_CONTENT_DIR . '/uploads/agreement.pdf'));
上面的工作,但每次插件更新的文件被覆盖,我必须重新应用代码修改再次。有一种更好的方法可以做到这一点而不受插件更新的影响,或者有一种方法可以部分或完全防止WordPress中的插件更新

提前感谢您的帮助。

您可以选择:

  • 分叉插件并根据您的需要进行自定义
  • 要求插件背后的团队实现一个过滤器挂钩,以允许自定义传递给wp_mail()函数的标题(这样您就可以将文件附加到电子邮件中)
  • 继续做你到现在为止一直在做的事情
我最喜欢选项二,因为:

  • 它允许您从外部自定义插件的行为
  • 您的更改将在插件更新后仍然有效

  • 禁用插件更新不是一个好主意,您可能会丢失重要的兼容性或安全更新。修改wp_mail()调用的方式也会导致其他附件相关功能停止工作。您提到的插件有一个过滤器,可用于修改附加文件的列表,例如,您可以将以下代码放入主题的functions.php文件中:

    add_filter( 'cpappb_email_attachments', 'my_attach_function', 10, 3 );
    
    function my_attach_function( $attachments, $params, $form_id )
    {
       $attachments[] = WP_CONTENT_DIR . '/uploads/agreement.pdf';
       return $attachments; 
    }
    

    上述代码位于插件文件之外时,您的文件将被添加到附件列表中,而无需删除其他附件,在插件文件之外定位代码将防止被插件更新覆盖。

    谢谢您提供的信息!按照建议,获得了带有过滤器挂钩的解决方案。