Wordpress在主题或者插件中自定义存储附件的方法
1、前端使用form表单
//单文件上传,我的业务需求中限制了必须上传图片
<input type="file" name="singlename" accept="image/*">
//多文件上传
<input type="file" name="multiename[]" multiple="multiple">
//注意同时应该是form节点上加上enctype="multipart/form-data"属性,否则文件将无法上传
2、在上述form表单接收的页面使用$_FILES通过name可以获取到文件的相关参数
$singlefile = $_FILES['singlename'];
$multifiles = $_FILES['multiname'];
在这里,需要注意单个文件和多个文件的处理方式是不同的,处理方式参照第四步,我们通过print_r到前端可以看到其格式
//这是单个文件的输出结果
Array (
[name] => 12345677889.jpg
[type] => image/jpeg
[tmp_name] => /tmp/phptyS5oO
[error] => 0 [size] => 32920
)
//这是多个文件的输出结果
Array (
[name] => Array (
[0] => 12345677889.jpg
[1] => attach_ico.png
)
[type] => Array (
[0] => image/jpeg
[1] => image/png
)
[tmp_name] => Array (
[0] => /tmp/phpDXQEa5
[1] => /tmp/php3Q09Xd
)
[error] => Array (
[0] => 0
[1] => 0
)
[size] => Array (
[0] => 32920
[1] => 1864
)
)
3、自定义函数调用Wordpress内置上传附件的函数media_handle_upload
function my_handle_attachment($file_handler,$post_id,$set_thu=false) {
// check to make sure its a successful upload
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');
$attach_id = media_handle_upload( $file_handler, $post_id );
if ( is_numeric( $attach_id ) ) {
update_post_meta( $post_id, '_my_file_upload', $attach_id );
}
return $attach_id;
}
4、调用自定义函数即可完成上传
如果是单个文件那么我们的调用将会很简单
$attachment_id = my_handle_attachment('singlename',$you_post_id);
在这里我们需要注意,通过 第二步我们可以看到单个文件和多个文件的输出结果格式的差异,因此我们需要对多个文件进行一下处理,让他成为单个文件的格式以完成上传
$files = $_FILES["multiname"];
foreach ($files['name'] as $key => $value) {
if ($files['name'][$key]) {
$file = array(
'name' => $files['name'][$key],
'type' => $files['type'][$key],
'tmp_name' => $files['tmp_name'][$key],
'error' => $files['error'][$key],
'size' => $files['size'][$key]
);
$_FILES = array ("singlefile" => $file);
$attachment_id = my_handle_attachment('singlefile',$you_post_id);
}
}
}
Wordpress在主题或者插件中自定义存储附件的方法的更多相关文章
- Django 模型中自定义Manager和模型方法
1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个m ...
- WordPress 安装主题、插件时问题解决办法
--当能够在外网访问到自己的博客时,很多人都会很兴奋吧!如果环境是自己配置的,而不是用的集成环境肯定也会有点小小的成就感. --但是在我兴奋的时候遇到了个小麻烦,下载插件提示我输入FTP信任凭据,输了 ...
- linux中syslog自定义存储路径的方法
方法一: 1. su //切换到root用户下2. cp /etc/sysconfig/rsyslog /etc/sysconfig/rsyslogbak //备份vim /etc/sysconfi ...
- wordpress安装主题、插件需要FTP用户名密码
修改主目录wordpress下的wp-config.php文件,在最结尾加上 define("FS_METHOD", "direct"); define(&qu ...
- 转--Android中自定义字体的实现方法
1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . 复制代码 代码如下: <?xml versio ...
- Vue中自定义指令的使用方法!
除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍然需要对普通 DOM ...
- 【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
问题描述 在App Service for Windows的环境中,当前只提供了PHP 7.4 版本的选择情况下,如何实现自定义PHP Runtime的版本呢? 如 PHP Version 8.1.9 ...
- WordPress主题设置插件,让你的站点有电脑、手机双主题
我们建站的时候总是会优先考虑自适应的主题,但是与之对应,免费的自适应主题都调用国外公共资源,访问速度不太理想.加上wordpress未经优化之前,本身也没有极高的访问效率.所以大家可以下载这款“主题设 ...
- 6.1 如何在spring中自定义xml标签
dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子. 一 编写模型类 package ...
随机推荐
- 大家一起来学 NHibernate+NUnit (VS2012+SQL Server2008)
大家一起来学 NHibernate+NUnit (VS2012+SQL Server2008) 分类: C#2013-08-10 18:47 1589人阅读 评论(5) 收藏 举报 NHibernat ...
- Codeforces Round #396 (Div. 2) A - Mahmoud and Longest Uncommon Subsequence B - Mahmoud and a Triangle
地址:http://codeforces.com/contest/766/problem/A A题: A. Mahmoud and Longest Uncommon Subsequence time ...
- 【Flask】Flask Cookie操作
### 什么是cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第 ...
- contain与compareDocumentPosition
contain方法由IE创建,用于判断元素之间是否是父亲与后代的关系,例如:如果A元素包含B元素,则返回true,否则,返回false eg: <div id= "a"> ...
- 课堂测试Mysort
课上没有做出来的原因 因为自己平时很少动手敲代码,所以在自己写代码的时候往往会比较慢,而且容易出现一些低级错误,再加上基础没有打牢,对于老师课上所讲的知识不能及时的理解消化,所以可能以后的课上测试都要 ...
- 偶然发现有的IIS里的程序,连接 不上SQL Server数据库, 超时
经查应用程序池中, 有一个启用32位应用程序, 有时打开它就能连接上SQL SERVER了.
- 选择使用Spring框架的原因(Spring框架为企业级开发带来的好处有哪些)
- Python学习(二)——深度学习入门介绍
课程二:深度学习入门 讲师:David (数据分析工程师) 这门课主要介绍了很多神经网络的基本原理,非常非常基础的了解. 零.思维导图预览: 一.深度神经网络 1.神经元 ...
- 从reduce函数说起...
reduce函数: 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值, 最终返回的要看函数内部return的内容. 1. 累加器: var ar ...
- scala mapPartitionsWithIndex函数的使用
var rdd1=sc.makeRDD(Array((1,"A"),(2,"B"),(3,"C"),(4,"D")),2 ...