【发布时间】:2013-10-14 06:00:01
【问题描述】:
我想在 wordpress 的常规设置选项卡中添加一个自定义字段。 这是wordpress默认拥有的当前字段。
- 网站标题
- 标签行
- Wordpress 地址 URL ...等
我想添加一个自定义字段,例如,我想要一个图片上传字段。
为此我不得不编辑
options-general.php ,
options.php,
general-template.php,
我必须在我的数据库中的 wp-options 表中插入一个条目
现在,当我用一个简单的 input type as text 对其进行测试时,它运行良好。
但是,当我为我的徽标上传设置 input type as file 时,它不起作用,这是我下面的代码。
options-general.php
<tr valign="top">
<th scope="row"><label for="logo"><?php _e('Logo') ?></label></th>
<td><input name="file" type="file"/></td>
</tr>
如您所见,我已将图像字段放在博客描述字段的正下方,此表单的操作会将我带到 options.php。
这是我的option.php
if ( is_multisite() && !is_super_admin() && 'update' != $action )
wp_die(__('Cheatin’ uh?'));
/* image upload function goes here */
if($_POST['submit']){
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("images/logo/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"images/logo/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
}
/* image upload function ends here */
上面我已经添加了简单的图片上传脚本,有的怎么不行,也没有上传文件到目录。
核心 PHP 代码是否在 WP 环境中工作或者我缺少某些东西,请建议。
【问题讨论】:
-
在我看来这不是有效的 PHP。你有几个地方有
}option.php,而这个}images/logo/" . $_FILES["file"]["name"]))看起来也很奇怪。 SO 语法高亮显示将代码显示为字符串,反之亦然 - 您在某处缺少"。 -
@Hobo 我已经编辑了上面的代码,请检查。
-
你得到什么输出?您的 PHP 日志中有任何内容吗?
-
@Hobo 我什么也没得到。当我在上传字段中设置图像后单击保存时,它显示“设置已保存。”。但不上传图像或我在 wp-options 表中设置的数据库字段
-
假设您在代码的每个分支中都有一个
echo,如果代码正在运行,您应该会看到一些输出。这似乎意味着它没有运行。$_POST['submit']确定了吗?您已将正确的文件上传到正确的位置? PHP日志中什么都没有?核心 PHP 确实在 WP 环境中工作,以回答您问题的那一部分。$_FILES是一个数组吗?也许你应该循环它?
标签: php mysql wordpress image-uploading