我们的网站上有几个用户。我们为每个用户创建了一个单独的文件夹。管理员有一个选择框来选择网站上的用户。我们必须提供在选择时向特定用户上传文件的能力。
我创建了一个hook来上传\\u dir。它可以与登录的用户一起正常工作。但如何在管理面板上使其动态化。当管理员在下拉菜单中选择一个用户并将文件上载到他选择的用户时,如何实现此功能。
function custom_upload_directory( $args ) {
global $current_user;
get_currentuserinfo();
$base_directory = ABSPATH."user_documents/".$current_user->user_login;
$base_url = home_url()."/user_documents/".$current_user->user_login;
$args[\'path\'] = $base_directory;
$args[\'url\'] = $base_url;
$args[\'subdir\'] = $current_user->user_login;
$args[\'basedir\'] = $base_directory;
$args[\'baseurl\'] = $base_url;return $args;
}
add_filter( \'upload_dir\', \'custom_upload_directory\' );
从下拉列表中选择用户后,我必须将文件上载到他的文件夹中。
下拉代码
<div id="userlistdiv" >
<form method="post" action="">
<h2><?php echo "users: " ?></h2>
<select id="userselection" name="userselection">
<?php
$blogusers = get_users(\'blog_id=1&orderby=login&role=subscriber\');
echo \'<option value="" selected="selected"></option>\';
foreach ($blogusers as $user) {
echo \'<option>\' . $user->user_login . \'</option>\';
}
?>
</select>
<INPUT TYPE="submit" name="submit" />
</form>
</div>
最合适的回答,由SO网友:kaiser 整理而成
你可以拿一个WP_User
具有的实例get_user_by()
- Codex 记录得很好。
add_filter( \'upload_dir\', \'userLoginUploadDir\' );
function userLoginUploadDir( $args )
{
// Assuming that your forms user login (search? autocomplete? AJAX-ified? foo?) is named
// name="user_login" id="user_login"
$userLogin = esc_attr( $_GET[\'user_login\'] );
$user = get_user_by( \'login\', $userLogin );
$upload_dir = wp_upload_dir();
return array_merge( $upload_dir, array(
# \'path\' => \'\',
# \'url\' => \'\',
\'subdir\' => $user->user_login,
# \'basedir\' => \'\',
# \'baseurl\' => \'\',
) );
}
基本上,只需设置
subdir
钥匙其余部分可从
wp_upload_dir()
. 在任何情况下:不要对路径或URL/URI使用常量。使用应用所需过滤器的函数。