上载目录的条件添加过滤器?

时间:2012-10-31 作者:Sarah

我有一个自定义媒体上载按钮(在标准后期编辑页面中,与标准媒体上载按钮一起),如果单击此按钮,需要使用add\\u filter(“wp\\u handle\\u upload\\u prefilter”,“my\\u function”)动态更改上载目录。

此帖子(&P);答复:Conditional add_filter? 似乎给出了解决方案,但由于某些原因,对我不起作用-未设置附加参数“hexProtected”&;因此未调用add\\u筛选器。

我的代码如下。。。我是在做傻事还是发布的解决方案不起作用?!

<?php
/* Custom Upload Directory for protected posts */                                    

function hex_protected_media_button($context) {
    global $post;
    $media_button_image = \'http://www.example.com/wp-admin/images/media-button.png?ver=20111005\';
    $media_button = \' %s\' . \'<a href="media-upload.php?post_id=\'.$post->ID.\'&amp;TB_iframe=1&amp;hexProtected=1" class="thickbox"><img src="\'.$media_button_image.\'" /></a>\';
    return sprintf($context, $media_button);
}

add_filter(\'media_buttons_context\', \'hex_protected_media_button\');                                                           
add_filter(\'wp_handle_upload_prefilter\', \'hex_pre_upload\');
add_filter(\'wp_handle_upload\', \'hex_post_upload\');

function hex_pre_upload($file){  
    if (isset($_GET[\'hexProtected\'])) {
       add_filter(\'upload_dir\', \'hex_custom_upload_dir\');
    }
    return $file;
}

function hex_custom_upload_dir($path){      
    if(!empty($path[\'error\'])) { return $path; } //error; do nothing.   
    $path[\'path\'] = str_replace($path[\'subdir\'], \'/protected\'.$path[\'subdir\'], $path[\'path\']);
    $path[\'url\'] = str_replace($path[\'subdir\'], \'/protected\'.$path[\'subdir\'], $path[\'url\']);        
    $path[\'subdir\']  = \'/protected\';    
    return $path;
}

?>

1 个回复
SO网友:Brendan Gannon

我知道这已经有一段时间了,但我想提供一个解决方案,如果只有那些通过谷歌遇到这个问题的人。

问题在于为媒体上载程序构建URL时查询字符串中参数的顺序。根据我的经验,“TB\\u iframe=1”之后的任何参数都会被忽略,因此您希望将自定义值放在这之前。我还没有看到这方面的文档(也没有探索core以了解为什么参数会以这种方式处理),但我想不出任何好的理由——在发现问题之前,我可能花了一个小时才把头发扯下来。

我还没有在3.5中尝试过这个。随着对媒体上传器的所有更改,可能已经解决了这一问题。

结束

相关推荐

将插件的子目录+文件移动到wp-Content/Uploads-目录的最佳方式是什么?

我是插件传单地图标记的开发人员(http://www.mapsmarker.com - “通过OpenStreetMap、OGD Vienna或任何自定义WMTS地图锁定、组织和显示您最喜爱的地点”),但有一个问题:该插件包含来自“地图图标”集合(mapicons.nicolasmollet.com)的大约100个标记图标,可用于标记您最喜爱的地点。这些图标存储在wp-content\\plugins\\leaflet-mapsmarker\\img\\mapicons. 现在,用户可以从集合中上传其他