web-dev-qa-db-fra.com

Comment définir un répertoire de téléchargement personnalisé par utilisateur après le déplacement du répertoire de contenu

Je mets le contenu et le répertoire wordpress de wordpress comme décrit dans le codex :

define('WP_SITEURL', 'https://' . $_SERVER['SERVER_NAME'] . '/wordpress');
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');

Maintenant, ce que je veux faire est de définir un répertoire de téléchargement individuel pour chaque utilisateur, comme ceci:

wpinstance.org/content/uploads/user-name/here-goes-the-file.jpg

J'ai déjà beaucoup essayé avec

define( 'UPLOADS', dirname(__FILE__) . '/content/uploads'.$current_user->user_name.'/');

ainsi que de nombreuses combinaisons sans dirname() et ainsi de suite. Il s’est avéré que tous les fichiers étaient jusqu’à wordpress/…something et que la partie du nom d’utilisateur était vide. Alors, comment puis-je y parvenir? Des idées?

2
mcnesium

Avec des crédits à petermolnar via irc://freenode.net/wordpress, je peux répondre à ma propre question. La clé consiste à définir un filtre upload-dir dans le functions.php du thème:

function per_user_upload_dir( $original ){
    // use the original array for initial setup
    $modified = $original;
    // set our own replacements
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        $subdir = $current_user->user_login;
        $modified['subdir'] = $subdir;
        $modified['url'] = $original['baseurl'] . '/' . $subdir;
        $modified['path'] = $original['basedir'] . DIRECTORY_SEPARATOR . $subdir;
    }
    return $modified;
}
add_filter( 'upload_dir', 'per_user_upload_dir');
4
mcnesium
function per_user_upload_dir( $original ){
    // use the original array for initial setup
    $modified = $original;
    // set our own replacements
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        $subdir = $current_user->user_login;
        $modified['subdir'] = $subdir;
        $modified['url'] = $original['baseurl'] . '/' . $subdir;
        $modified['path'] = $original['basedir'] . DIRECTORY_SEPARATOR . $subdir;
    }
    return $modified;
}
add_filter( 'upload_dir', 'per_user_upload_dir');

cela a fonctionné pour moi ... mais est-il possible de créer un autre sous-dossier pour tous les utilisateurs, comme uploads/users /? je veux garder tout le contenu des utilisateurs dans le dossier des utilisateurs sous le répertoire de téléchargement

0
Shohag Malik