web-dev-qa-db-ja.com

コンテンツディレクトリを移動した後にユーザーごとにカスタムアップロードディレクトリを設定する方法

Wordpressのコンテンツとwordpressディレクトリを コーデック内 のように設定します。

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

今、私がやりたいことは、このように、すべてのユーザーに個別のアップロードディレクトリを設定することです。

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

私はすでにたくさん使ってみました

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

dirname()などのない多くの組み合わせと同様に。ファイルをwordpress/…somethingまで持ち上げ、ユーザー名の部分を空のままにしたことがすべて判明しました。では、どうすればこれを達成できますか?何か案は?

2
mcnesium

irc://freenode.net/wordpress経由で petermolnar にクレジットを付けて、私は自分の質問に答えることができます。重要なのは、テーマのupload-dirfunctions.phpフィルタを設定することです。

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');

それは私のために働いています...しかし、uploads/users /のように、すべてのユーザーのために別のサブフォルダーを作ることは可能ですか?すべてのユーザーのコンテンツをアップロードディレクトリの下のusersフォルダーに保存したい

0
Shohag Malik