2. 5 メディアに関するカスタマイズ

アップロードディレクトリ設定, 本人のメディアのみ表示

アップロードディレクトリ設定

 メディアのアップロードディレクトリをユーザー毎に変えます。
 ファイル名の重複を防止できます。
 アップロード先のディレクトリは、下記になります。
  uploads/users/user_ユーザーID;
 本来アップロード権限のない寄稿者もディレクトリを設定します。
 ユーザ用ルートディレクトリやユーザ別アップロードディレクトリが存在しない場合は作成します。

コード

// --------------------------------
// アップロードディレクトリ設定
// --------------------------------
function hk_functions_upload_dir( $uploads ) {
    // user_id
    $user_id = get_current_user_id();
    // ユーザ用ルートディレクトリ
    $dir = WP_CONTENT_DIR.'/uploads/users';
    if ( ! file_exists( $dir ) ) {
        umask( 0 );
        mkdir( $dir );
    }
    // ユーザ別アップロードディレクトリ
    $dir = WP_CONTENT_DIR.'/uploads/users/user_'.$user_id;
    if ( ! file_exists( $dir ) ) {
        umask( 0 );
        mkdir( $dir );
    }
    // アップロードディレクトリ設定
    $subdir = '/users/user_'.$user_id;
    $uploads['path'  ] = $uploads['path'].$subdir;    // $dir
    $uploads['url'   ] = $uploads['url' ].$subdir;    // $url
    $uploads['subdir'] = $subdir;
    return $uploads;
}
add_filter( 'upload_dir', 'hk_functions_upload_dir' );

投稿者・寄稿者 本人のメディアのみ表示

 投稿者・寄稿者の場合、“メディア一覧”と“メディアを追加”に本人のメディアのみ表示します。

コード

// --------------------------------
// メディア一覧
// メディアを追加(JavaScript)
//   投稿者・寄稿者 本人のメディアのみ表示
// --------------------------------
function hk_functions_pre_get_posts( $wp_query ) {
    // 管理者・編集者除外
    if (( current_user_can('administrator') )
     || ( current_user_can('editor') ))                  return;
    // 投稿者・寄稿者の場合
    $post_type = $wp_query->get('post_type');
    // 添付ファイルかどうか
    if ( empty( $post_type ) )                           return;
    if ( is_array( $post_type ) ) {
        if ( ! in_array( 'attachment', $post_type ) )    return;
    }
    else {
        if ( $post_type != 'attachment' )                return;
    }
    // パラメータ設定
    $wp_query->set( 'author', get_current_user_id() );
    return;
}
add_action( 'pre_get_posts', 'hk_functions_pre_get_posts' );

 このプログラムをお使いになる場合は、お使いになる方の自己責任でお願いします。

更新日:2016/03/19
掲載日:2016/03/19