WordPress 以编程方式上传文件:3 种实用方法
已发表: 2022-10-20默认情况下,WordPress 支持通过其媒体库或帖子编辑屏幕上传文件。 当您使用这些内置功能将文件上传到您的网站时,WordPress 会为您处理一切。 它允许您查看所有上传的文件并将它们插入到您的帖子或页面中。
但是,在自定义功能(例如前端文件上传)方面,您需要的远不止这些。 有很多可用的插件可帮助您添加、修改和管理文件,而无需调整代码。 当然,大多数都需要收费。
如果您不想为插件付费,以编程方式将文件上传到您的 WordPress 网站可能是一种解决方案。 在本文中,我们将详细指导您如何实现这一目标。
让我们开始吧!
- 一点通知
- #1 以编程方式从 URL 将文件上传到媒体库
- #2 通过 HTML 表单添加文件
- #3 以编程方式将文件插入自定义图库
- 额外提示:保护您的文件上传
一点通知
这种方法主要是干扰代码。 因此,请仅在您具备一些编码知识的情况下才选择使用此技术。 否则,您的整个网站可能会因一个小的不当更改而崩溃。
如果您刚开始使用 WordPress,我们强烈建议您使用 Gravity Forms 插件来接受前端文件上传。 或者,查看 WordPress 前端文件上传的前 5 个插件。 您还可以使用 FTP 客户端从后端上传文件。
仍然,想学习如何在 WordPress 中以编程方式上传文件吗? 继续阅读!
#1 以编程方式从 URL 将文件上传到媒体库
您浏览互联网并找到想要上传到 WordPress 媒体库的精彩图片。 这是这样做的路线:
- 复制图像的 URL。
- 将以下代码嵌入您的网站并插入您复制的 URL:
/** * 以编程方式从 URL 上传图片 * * @作者米莎·鲁德拉斯蒂 * @link https://rudrastyh.com/wordpress/how-to-add-images-to-media-library-from-uploaded-files-programmatically.html#upload-image-from-url */ 功能 rudr_upload_file_by_url( $image_url ) { // 它允许我们使用 download_url() 和 wp_handle_sideload() 函数 需要一次(ABSPATH。'wp-admin/includes/file.php'); // 下载到临时目录 $temp_file = download_url($image_url); 如果(is_wp_error($temp_file)){ 返回假; } // 将临时文件移动到上传目录 $文件 = 数组( '名称' => 基本名称( $image_url ), '类型' => mime_content_type( $temp_file ), 'tmp_name' => $temp_file, '大小' => 文件大小($temp_file), ); $sideload = wp_handle_sideload( $文件, 大批( 'test_form' => false // 不需要检查 'action' 参数 ) ); 如果(!空($sideload['错误'])){ // 如果你愿意,你可以返回错误信息 返回假; } // 是时候将我们上传的图片添加到 WordPress 媒体库中了 $attachment_id = wp_insert_attachment( 大批( 'guid' => $sideload['url'], 'post_mime_type' => $sideload['type'], 'post_title' => 基本名称($sideload['file']), 'post_content' => '', 'post_status' => '继承', ), $sideload['文件'] ); if( is_wp_error( $attachment_id ) || ! $attachment_id ) { 返回假; } // 更新元数据,重新生成图像大小 需要一次(ABSPATH。'wp-admin/includes/image.php'); wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata($attachment_id, $sideload['file']) ); 返回 $attachment_id; }
而已!
#2 通过 HTML 表单添加文件
第二种方法是创建一个带有文件输入和提交按钮的简单 HTML 表单。 您可以将此表单放在任何页面或帖子上,从而允许用户将文件上传到您的站点。 采取以下步骤通过 HTML 表单在 WordPress 中以编程方式上传文件:
- 嵌入以下代码来构建一个简单的 HTML 表单:
1 <h2>上传文件</h2> 2 <form method="post" enctype="multipart/form-data"> 3 <input type="file" name="file" required /> 4 <input type="submit" name="upload_file" value="Upload" /> 5 </形式>
通过使用wp_upload_bits()函数,WordPress 会自动将您上传的文件存储在上传目录中。 您可以在当前年月文件夹中找到您的文件,例如wp-content/uploads/2020->03->your_file 。

2. 将此代码插入您的functions.php文件中:
1 <?php 2 函数 fn_upload_file() { 3 if ( isset($_POST['upload_file']) ) { 4 $upload = wp_upload_bits($_FILES['file']['name'], null, $_FILES['file']['tmp_name']); 5 // 保存到数据库 $upload['url] 6 } 7 } 8 add_action('init', 'fn_upload_file');
如果您打印$upload变量,您将获得一个包含目录和上传文件的 URL 的数组。 用户可以使用$upload['url]在数据库中查找并保存这些 URL。
如上所述,一旦使用wp_upload_bits()方法,您的文件将存储在默认的 WordPress 文件夹层次结构中。 但是,如果您希望将文件保存在自己的目录中呢?
在这种情况下,您应该在上传目录中创建一个自定义文件夹并将文件移动到其中。 假设您要将文件存储在uploads/product-images目录中。 使用下面的代码,您可以生成product-images文件夹并将文件存储在其中。
在functions.php文件中编写代码:
1 函数 fn_upload_file() { 2 if ( isset($_POST['upload_file']) ) { 3 $upload_dir = wp_upload_dir(); 4 5 if ( !empty( $upload_dir['basedir'] ) ) { 6 $user_dirname = $upload_dir['basedir'].'/product-images'; 7 if ( !file_exists( $user_dirname ) ) { 8 wp_mkdir_p($用户目录名); 9 } 10 11 $filename = wp_unique_filename($user_dirname, $_FILES['file']['name']); 12 move_uploaded_file($_FILES['file']['tmp_name'], $user_dirname .'/'. $filename); 13 // 保存到数据库 $upload_dir['baseurl'].'/product-images/'.$filename; 14 } 15 } 16 } 17 add_action('init', 'fn_upload_file');
在这里,我们应用wp_unique_filename()技术为给定目录提供唯一的文件名。
#3 以编程方式将文件插入自定义图库
假设您有一个画廊添加为一个名为“画廊”的自定义元字段。 您通过media_sideload_image()上传大量图像。 然后,序列化它们的 ID 并通过update_post_meta( $post_id , 'gallery', $serialized)将它们插入到图库中;
因此,当您在后端编辑帖子页面中查看帖子时,您会看到所有上传的照片。 但是,在您点击后端的更新之前,这些图片不会在前端的幻灯片中显示。
那么,如何在创建图库后以编程方式单击更新按钮? 只需按照以下指南进行操作:
- 更新帖子库后,添加此代码以编程方式选择更新按钮:
wp_update_post(['ID'=>$post_id]);
2.更新缓存以使用搜索和过滤功能:
do_action('search_filter_update_post_cache', $post_id);
额外提示:保护您的文件上传
有什么方法可以防止未经授权访问您上传的文件? 答案是肯定的。 有关更多信息,请参阅我们的详细指南,了解 21 种有用的 .htaccess 技巧来保护 WordPress 文件。 由于 .htaccess 是一个让您的网站顺利运行的关键文件,因此在进行任何更改时要小心。
另一方面,如果您对自己的编码技能没有信心,请安装 PDA Gold 插件。 它将帮助您处理麻烦,而不必担心影响 .htaccess 文件。
另一个值得考虑的方法是使用密码保护您的 WordPress 文件。 查看我们的文章了解更多详情。
像专家一样在 WordPress 中以编程方式上传文件!
我们向您展示了在 WordPress 中以编程方式上传文件的 3 种方法。 现在,您可以轻松地将文件上传到媒体库或通过 HTML 前端文件上传表单。 将文件添加到您的自定义画廊也是可以实现的。 最重要的是,不要忘记使用代码或安装插件来保护您的 WordPress 文件。
这完全是关于如何在 WordPress 中以编程方式上传文件。 你知道其他方法吗? 请在下面的评论部分与我们分享。