php - php如何从wordpress媒体上传器添加附件到 wp_mail ( Wordpress )?

  显示原文与译文双语对照的内容

我正在开发一个插件,其中有一个后台页面,它显示一个输入文本字段和一个按钮。 当你点击那个按钮,wordpress媒体上传器打开,你可以选择一个文件。 文件的URL将被插入到输入字段的值中。 在这里你可以看到代码:

html :


<div class="wp-uploader">


 <input id="upload_image" type="text" size="36" name="upload_image" value=""/>


 <input class="button" id="upload_image_button" type="button" value="Legg til PDF fra mediabibliotek"/>


</div>



jQuery:


jQuery(document).ready(function($){



 var custom_uploader;



 $('#upload_image_button').click(function(e) {



 e.preventDefault();



//If the uploader object has already been created, reopen the dialog


 if (custom_uploader) {


 custom_uploader.open();


 return;


 }



//Extend the wp.media object


 custom_uploader = wp.media.frames.file_frame = wp.media({


 title: 'Velg en PDF',


 button: {


 text: 'Velg'


 },


 multiple: false


 });



//When a file is selected, grab the URL and set it as the text field's value


 custom_uploader.on('select', function() {


 attachment = custom_uploader.state().get('selection').first().toJSON();


 $('#upload_image').val(attachment.url);


 });



//Open the uploader dialog


 custom_uploader.open();



 });



});



我想把这个选择的文件作为wp_mail附件发送。

以下是我的功能:


function dd_send_email(){



 $email_sent = false;



//get email template data


 $email_template_object = dd_get_current_options();


 $url = $_POST['upload_image'];


 $mail_attachment = array(WP_CONTENT_DIR=>$url); 



//if email template data was found


 if (!empty( $email_template_object ) ):



//setup wp_mail headers


 $wp_mail_headers = array('Content-Type: text/html; charset=UTF-8');



//use wp_mail to send email


 $email_sent = wp_mail( array( 'example@email.com'), $email_template_object['dd_emne_forhaandsbestilling'], $email_template_object['dd_email_text_forhaandsbestilling'], $wp_mail_headers, $mail_attachment );


 endif;



 return $email_sent;



}



但这不正常。 我仍然收到没有附件的电子邮件。 我想我获得文件url的方式是错误的,但是我找不到如何做到这一点。

感谢你的帮助!

时间: 原作者:

我自己找到答案了。 因为wp_mail需要这样的文件路径,所以我们必须将url转换为这样的路径。

我在 dd_send_mail() 中改变了以下内容,并认为我可以与你共享它:


//change url to path 


$dd_url = $_POST['upload_image'];


$dd_path = parse_url($dd_url);



//cut the path to right directory


$array = explode("/norskeanalyser/wp-content", $dd_path['path']);


unset($array[0]);


$text = implode("/", $array);



然后我将 $text 保存到 $mail_attachment 中,并像上面那样调用 wp_mail 。

感谢大家的帮助 !

原作者:
...