업로드 폴더의 기본 구조인 ‘/연도/월’ 구조에서 ‘/월’ 분류를 없애고 ‘/연도’ 구조로 간략하게 변경.
워드프레스에서 파일을 업로드하면 기본적으로 다음과 같은 폴더 구조가 만들어집니다.
이러한 분류가 불필요하다면 미디어 설정 페이지(/wp-admin/options-media.php)에서 이 기능을 해제할 수 있습니다. 그러면 이후에 업로드하는 파일들은 폴더 분류없이 uploads에 주~욱 쌓이게 됩니다.
어떤 옵션을 선택하는 것이 좋을지는 블로그 운영자의 관리 취향 혹은 미디어 업로드 빈도에 따라 각각 다를 것입니다. 하지만 그 중간의 설정이 없는 것은 다소 아쉽습니다. 다양한 규모의 웹사이트들을 만들다보면 이러한 구조변경의 필요성을 종종 느끼곤 하는데요, ‘월’ 분류없이 ‘연도’로만 분류를 만들어보도록 하겠습니다.
업로드 경로설정은 ‘upload_dir’이라는 훅 네임으로 필터링할 수 있는 기회가 있군요.
우선 아래와 같이 필터를 걸고, 어떤 값들이 할당되었는지 확인해보겠습니다.
add_filter( 'upload_dir', 'my_upload_dir' ); function my_upload_dir($r){ echo '<pre>' . print_r($r, true) . '</pre>'; return $r; }
출력 결과:
Array ( [path] => /생략/wp-content/uploads/2014/03 [url] => /생략/wp-content/uploads/2014/03 [subdir] => /2014/03 [basedir] => /생략/wp-content/uploads [baseurl] => /생략/wp-content/uploads [error] => )
basedir/baseurl은 uploads 폴더의 경로이고, path/url은 파일이 업로드될 경로입니다.
subdir의 형식(/연도/월)을 체크하여 ‘월’부분을 떼어내고 path와 url을 고쳐줍니다.
function my_upload_dir($r){ $subdir = $r['subdir']; if ( get_option( 'uploads_use_yearmonth_folders' ) && preg_match( '#^/\d{4}/\d{2}$#', $subdir ) ) { $new_subdir = preg_replace('#^(/\d{4})/\d{2}$#', '$1', $subdir); $r['path'] = preg_replace('#(.+)('.$subdir.')$#', '$1'.$new_subdir, $r['path']); $r['url'] = preg_replace('#(.+)('.$subdir.')$#', '$1'.$new_subdir, $r['url']); $r['subdir'] = $new_subdir; } return $r; }
앞으로 업로드하는 파일들은 ‘월’ 구분없이 ‘연도’로만 구분됩니다.
← home