将附件上传到前端--精致

时间:2011-02-28 作者:Jonah Goldstein

我可能违反了一些常识规则。

is there a way to utilize wordpress\' bake in attachment file handling for an upload form within a theme template? yes, the front end -- i know.

我正在创建一个纪念网站,我希望人们能够为我们社区失去的一位亲爱的人留下文字照片上的“评论”。

但这些不是wordpress用户。他们是姑姑和孩子,以及介于两者之间的一切。

这些人将无法理解WP默认的媒体UI,我不希望他们不得不登录并四处走动。对他们来说太令人困惑了。如果这不是一个如此具体和微妙的项目,我就不会试图如此扭曲规则。

我知道我允许任何人上传文件是在打开安全漏洞,但我认为这有点必要。所有上载的附件都将处于“挂起”状态我将文本和照片都设置为自定义的帖子类型,而不是作为评论,以便我可以利用一些内置的帖子数据。

如果我能利用worpdress内置的文件检查、处理、命名、大小。。。等等,即使文件处理在前端。

我想也许我可以使用:wp_handle_upload()

通过包括\'../wp-admin/includes/file.php\'

但那没用。当我尝试包含它时,会出现致命错误。在模板中包含admin include是否完全违反了规则。。。可能

我可以自己处理所有的文件,但我想也许有一种方法可以利用wordpress的功能,而且可能更安全。

或者有没有关于我应该走的另一条路线的建议?

不幸的是,这对时间很敏感。。。几天后就要举行追悼会了。

非常感谢你

约拿

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

以下是我在接受前端上传时使用的函数,您可以在模板文件中使用它:

function insert_attachment($file_handler,$post_id,$setthumb=\'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 ($setthumb) update_post_meta($post_id,\'_thumbnail_id\',$attach_id);
  return $attach_id;
}

Usage:

// set $post_id to the id of the post you want to attach
// these uploads to (or \'null\' to just handle the uploads
// without attaching to a post)

if ($_FILES) {
  foreach ($_FILES as $file => $array) {
    $newupload = insert_attachment($file,$post_id);
    // $newupload returns the attachment id of the file that
    // was just uploaded. Do whatever you want with that now.
  }
}

结束

相关推荐

404从wp-Content/Uploads/获取图像时

我在获取图像时获得404状态,http仍然包含该图像。图像显示在浏览器中,但404代码中断了一些应用程序。对wp内容/上载/的调用被重定向到。htaccess:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\\.php$ - [L] RewriteRule (.*) /index.php?getfile=$1 [L] </IfModule>&