WordPress 从前端上传图片并作为文章的附件

文 / @WordPress主题

使用WordPress上传图片

如果你正在使用WordPress开发主题,你可能会遇到需要实现从前端上传图片的需求。虽然看起来有些麻烦,但实际上WordPress已为我们提供了非常简单的接口,只需几行代码即可完成附件上传。

主要工作是引用必要的文件,使用media_handle_uploadupdate_post_meta功能。下面是具体的代码实现。

function insert_attachment($file_handler, $post_id, $setthumb='false') {
	// 检查附件是否上传成功
	if($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) {
		return false;
	}

	require_once(ABSPATH . 'wp-admin' . '/includes/image.php');
	require_once(ABSPATH . 'wp-admin' . '/includes/file.php');
	require_once(ABSPATH . 'wp-admin' . '/includes/media.php');

	// 上传到媒体库并返回附件的ID
	$attach_id = media_handle_upload($file_handler, $post_id);
	
	// 把上传成功的附件附加到文章
	if($setthumb) {
		update_post_meta($post_id, '_thumbnail_id', $attach_id);
	}
	
	return $attach_id;
}

如何使用上述函数

对于新手来说,以下是使用上述函数的步骤,而高手可以直接跳过。在使用时,只需将PHP的全局变量$_FILES作为函数的第一个参数,需要插入的文章ID作为第二个参数即可。

if($_FILES) {
	foreach($_FILES as $file => $array) {
		$newupload = insert_attachment($file, $post_id);
	}
}

上传成功后,你在WordPress后台看到的效果和直接在后台插入缩略图是一样的。看起来非常简单吧!如果你有更简单的方法,欢迎在评论中分享。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。