更改插件中的上传目录,而不考虑帖子类型

时间:2012-02-21 作者:lepardman

我读过this post 发现它真的很有趣。如果您有一个自定义的db表,而不是一个真正需要依赖的post类型,我尝试对其进行一些修改以使其正常工作。所以我尝试使用get\\u current\\u screen()而不是get\\u post\\u type()来解决这个问题。

在这个例子中,我做了一个小插件来注册某种类型的成员(只是为了在任何不使用post类型的插件中使用它),并像原始代码一样将个人资料照片上传到插件目录。虽然这似乎不起作用,但文件仍然保存在常规的“wp-content/uploads/”目录中。有什么想法吗?

该插件本身使用一个简单的表单将数据保存到db,我还连接了wp上传程序来上传和发送图像url以及其余的数据。

function custom_upload_directory( $args ) {

$screen = get_current_screen();

// If the parent_base is members, upload to plugin directory
if ( $screen->parent_base == ‘members’ ) {
    $args[\'path\'] = plugin_dir_path(__FILE__) . “uploads”;
    $args[\'url\'] = plugin_dir_url(__FILE__) . “uploads”;
    $args[\'basedir\'] = plugin_dir_path(__FILE__) . “uploads”;
    $args[\'baseurl\'] = plugin_dir_url(__FILE__) . “uploads”;
}
return $args;
}
add_filter( ‘upload_dir’, ‘custom_upload_directory’ );

1 个回复
SO网友:kaiser

输入错误:“不是”

你有一个很好的编辑器。您只是使用了错误的引号类型:

  • 应该是"
  • 应该是\'
以下是更改后的功能:

function wpse43013_custom_upload_directory( $args ) 
{
    // If the parent_base is "members", upload to plugin directory
    if ( \'members\' === get_current_screen()->parent_base )
        return wp_parse_args( $args, array_fill_keys(
             array( \'path\', \'url\', \'basedir\', \'baseurl\' )
            ,plugin_dir_path( __FILE__ ).\'uploads\'
        ) );

    return $args;
}
add_filter( \'upload_dir\', \'wpse43013_custom_upload_directory\' );
调试通常会引发错误。确保已设置WP_DEBUG 设置为TRUE 在您的wp-config.php 在开发环境中测试代码时使用。

define( \'WP_DEBUG\', true );
在生产站点上,您还可以启用错误日志(不要经常这样做,并禁用错误显示,以便正确记录错误,而不向用户显示错误)。

define( \'WP_DEBUG\', true );
define( \'WP_DEBUG_LOG\', true );
define( \'WP_DEBUG_DISPLAY\', false );
@ini_set( \'display_errors\', 0 );
请参见editing wp-config 有关定义配置常量的更多信息,请参见第页。

结束

相关推荐

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>&