吵吵   2011-08-25  阅读:2,990

最近在写一个wordpress的plugin,用来为我们的每一个tag添加一张图片,这样子就能在首页每篇文章的右边看到一张有该tags的图片了,这个想法也是参考月光博客的。要解决这个问题的最重要的是要解决文件上传的问题,在google和百度上找了半天都没找到有用的信息,于是乎下载了一个插件,自己研究它的代码才搞定了。

要在我们的后台插件设置的界面实现我们的文件上传需要分为以下几步来走:
1.建立一个特殊的文件上传表单.
一般来说,在php中文件上传是很简单的,有一个type为file的input就可以上传了,然后我们就可以获得一个文件的数组,其中有上传文件暂时保存的地址,如:
$_FILES[“fields”][“temp_name”]
但是在wp中,我们是不能这么做的,wordpress会把我们上传的文件进行过滤,简单的表单会被禁止掉,为了上传文件,表单得这个写:









是的,你一定看到了有一个hidden的即隐藏的名为action的input。与原来我们的表单相比,在wp中需要加入的就是这个东西了。
2.了解一下这个数组中的变量到底是什么类型的 $_FILES[“uploadFile”][“tmp_name”]
一般来说,我们post了一个带有文件的页面后,在接受页面我们可以利用$_FILES[“uploadFile”][“tmp_name”]来得到我们上传文件的暂时的保存路劲,也就是说这代表一个字符串。而在wordpress中,他会把那个文件读入内存中,也就是说这个已经不是保存地址的字符串了,这是读取了我们文件的bit数组。
3.建立一个文件把内存中的bits数组保存下来.
我根据wp中的代码改写了一个函数来实现文件的保存。

function tagsImage_upload_bits( $name, $bits){
$ifp = @ fopen( $name, 'wb' );
if ( ! $ifp )
{
echo "can not create file!";
}
@fwrite( $ifp, $bits );
fclose( $ifp );
clearstatcache();

// Set correct file permissions
$stat = @ stat( dirname( $name ) );
$perms = $stat['mode'] & 0007777;
$perms = $perms & 0000666;
@ chmod( $new_file, $perms );
clearstatcache();

}

最后是我写的插件中的一段代码,给大家做个参考。

$tag=get_term_by( 'name', $_REQUEST['tagName'], 'post_tag' ); //用 get_term_by函数获取别名对应的标签数组
if ($tag) {

$fileSave=dirname(__FILE__).'/tagimages/'.$tag->term_id.'.jpg';
tagsImage_upload_bits($fileSave,file_get_contents($_FILES["uploadFile"]["tmp_name"]));

}
else
{
echo 'the tag you enter does not exist!';

}

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

6条回应:“wp插件开发之文件上传”

  1. 混小子博客说道:

    你博客换主题了啊

  2. 阿木说道:

    这些阿木一点都看不懂啊

  3. Yusky说道:

    不懂代码啊~
    打酱油嘞。

    等待博主插件出产。第一个试用~~

发表评论

电子邮件地址不会被公开。 必填项已用*标注