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

时间:2018-07-22 14:26:05

标签: wordpress plugins updates

我正在使用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中的插件更新?

在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您的选择是:

  • 分叉插件并根据您的需要对其进行自定义。
  • 询问插件背后的团队以实现过滤器挂钩,以允许自定义传递给wp_mail()函数的标头(这样您便可以将文件附加到电子邮件中了)。
  • 继续做直到现在为止的事情。

我最喜欢第二种选择,因为:

  1. 它允许您从外部自定义插件的行为,并且
  2. 您所做的更改将在插件更新后继续存在。

答案 1 :(得分:0)

禁用插件更新不是一个好主意,您可能会丢失重要的兼容性或安全更新。修改对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; 
}

在上述代码位于插件文件之外的情况下,您的文件将添加到附件列表中,而不会删除其他附件,并且将代码定位在插件文件之外将防止插件更新覆盖。