我已经编写了一个自定义php,允许我的模板页面中的用户从前端上传新创建的子文件夹中的文件user_login 作为其名称uploads 文件夹因此,将上载根文件夹,并在用户的子文件夹中存储所有文件。这是我的密码。
<form enctype="multipart/form-data" action="" method="POST" class="centered">
<p></p>
<p>
Select a document to upload
</p>
<?php
$user = wp_get_current_user();
$dirname = $user->user_login;
$upload_dir = wp_upload_dir();
// creates a user subdir for the files
if ( isset( $current_user->user_login ) && ! empty( $upload_dir[\'basedir\'] ) ) {
$user_dirname = $upload_dir[\'basedir\'].\'/\'.$current_user->user_login;
if ( ! file_exists( $user_dirname ) ) {
wp_mkdir_p( $user_dirname );
}
}
if(isset($_FILES[\'document\'])){
$errors = array();
$document = $_FILES[\'document\'][\'name\'];
$file_tmp = $_FILES[\'document\'][\'tmp_name\'];
if(empty($errors)==true){
move_uploaded_file($file_tmp,"/$user_dirname/".$document);
echo "The file was uploaded successfully!";
}else{
print_r($errors);
}
}
?>
<input type="file" name="document" class="centered" value="">
<p></p>
<input type="submit" value="Upload Document" name="submit">
</form>
正如你所看到的,我没有使用任何WP功能,因为我不是很有经验,但我想创建一个
action (我相信这是一个正确的词)它在每次文件上传到uploads文件夹时都会发送电子邮件通知。我需要使用什么钩子和/或以什么方式修改代码才能使用wordpress操作?
我发现了这个动作publish_post 这提供了一个创建帖子时如何发送电子邮件的示例。然而,我的代码不会创建帖子,而且在我有一个批处理程序进行上传的情况下,它也不会工作。上传文件时是否有触发我可以使用的操作?
我的背景是Laravel,所以我仍在学习WP的工作方式,主要使用PHP,但对WP功能的使用有限。
最合适的回答,由SO网友:Sneha Agarwal 整理而成
您可以使用wp\\u邮件功能https://developer.wordpress.org/reference/functions/wp_mail/ 在文件成功上载到您的目录后,向任何人发送电子邮件。您不需要在此处执行任何操作
成功上载文件后将其添加到您的代码中
if(empty($errors)==true){
move_uploaded_file($file_tmp,"/$user_dirname/".$document);
echo "The file was uploaded successfully!";
wp_mail(..);
}else{
print_r($errors);
}
}