【WordPress】ディレクトリ内のファイルパスを全て取得する関数
WordPressでディレクトリ内のファイルパスを全て取得したかったので作成した。
コード
function get_file_paths_in_directory( $directory_path, $is_searching_in_sub_directory = true ) {
$pattern = TEMPLATEPATH.$directory_path.'/*';
$paths = glob( $pattern );
$file_paths = [];
$add_file_paths_in_sub_directory = function( $path ) use( &$file_paths, $is_searching_in_sub_directory ) {
if ( !$is_searching_in_sub_directory ) return;
$sub_directory_path = str_replace( TEMPLATEPATH, '', $path );
$file_paths_in_sub_directory = get_file_paths_in_directory( $sub_directory_path );
$file_paths = array_merge( $file_paths_in_sub_directory, $file_paths );
};
$add_file_path = function( $path ) use( &$file_paths ) {
$file_paths[] = $path;
};
foreach ( $paths as $path ) {
is_dir( $path ) ?
$add_file_paths_in_sub_directory( $path ) :
$add_file_path( $path )
;
}
return $file_paths;
}
使い方
引数の$directory_path
にテンプレートパス以降のパスを指定し、呼び出す。
$file_paths = get_file_paths_in_directory( '/sample' );
ディレクトリ内の全てのファイルパスを配列として取得できる。
サブディレクトリを対象にしたくない場合は、引数の$is_searching_in_sub_directory
にfalse
を指定する。