Post Specific Uploader

时间:2012-04-04 作者:roberthuttinger

我已经使用过上传文件的过滤器。我得到的最接近的结果是将文件上载到目录,但在文件上载后,我得到了一系列错误:Undefined index: post_id我认为问题很简单,就是无法访问当前的帖子id。我已经尝试过了$wp_query->post->ID;$post->ID 这两种方法似乎都不管用。这些文件将始终与帖子关联。

我正在使用的代码的最后一次迭代:

// filter for uploads
    function ml_media_upload_dir($upload) {

    $id = $_REQUEST[\'post_id\'];
    $parent = get_post( $id )->post_parent;

        if (isset($_REQUEST[\'post_id\'])) {
            $upload[\'path\']    = "/foo/www/folder/blog/wp-content/uploads/" . $id;
            $upload[\'url\']     = "http://foo.com/blog/wp-content/uploads/" . $id;
            $upload[\'basedir\'] = "/foo/www/folder/blog/wp-content/uploads/" . $id;
            $upload[\'baseurl\'] = "http://foo.com/blog/wp-content/uploads/" . $id;

            if (!file_exists("/foo/www/folder/blog/wp-content/uploads/" . $id)) {
                mkdir("/foo/www/folder/blog/wp-content/uploads/" . $id, 0777);
            }
        }


        return $upload;
    }
    add_filter(\'upload_dir\', \'ml_media_upload_dir\');
我甚至尝试添加另一个带有post\\u action=1参数的“插入媒体”链接进行测试。(http://foo.com/blog/wp-admin/media-upload.php?post_id=571&TB_iframe=1&post_action=1&width=640&height=567)

如果有post\\u id,如何确保文件加载到特定文件夹中?

任何帮助。。

干杯Bo公司

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

检查参数是否存在,如果不存在,则返回默认值:

if(!isset($_REQUEST[\'post_id\']))
  return $upload;

// cast it to integer to avoid problems
$id = (int)$_REQUEST[\'post_id\'];

...

结束

相关推荐

Run shortcode before filters

我的用户在注释中发布代码片段。我为此创建了一个快捷码:function post_codigo($atts,$content=\"\"){ return \'<code>\'.$content.\'</code>\'; } add_shortcode(\'codigo\',\'post_codigo\'); 问题是html在打包到代码标记之前会被过滤掉。我想如果我能在过滤器之前运行短代码,那么我可以使用fun