Files and Directories
The files utility function provides a tool for listing subdirectories within a specified directory.
Available Function
cbo_list_folders($folder, $levels)
Lists subdirectories within a specified directory with configurable depth.
Parameters:
$folder: The directory path to scan (default: '').$levels: Number of levels of subdirectories to explore (default: 1).
Return Value:
Returns an array of subdirectories found or false in case of error.
1// List subdirectories in the uploads folder2$uploads_dir = wp_upload_dir()['basedir'];3$subdirs = cbo_list_folders($uploads_dir);45// Display the subdirectories6if ($subdirs) {7echo '<ul>';8foreach ($subdirs as $dir) {9echo '<li>' . $dir . '</li>';10}11echo '</ul>';12} else {13echo 'No subdirectories found or error occurred.';14}1516// List subdirectories with depth of 217$theme_dir = get_template_directory();18$theme_subdirs = cbo_list_folders($theme_dir, 2);1920// Display the theme subdirectories21if ($theme_subdirs) {22echo '<h3>Theme Subdirectories:</h3>';23echo '<ul>';24foreach ($theme_subdirs as $dir) {25echo '<li>' . $dir . '</li>';26}27echo '</ul>';28}
Usage Examples
Finding Template Parts
1// Find all template parts in the theme2function get_template_parts() {3$template_parts_dir = get_template_directory() . '/template-parts';4$template_parts = [];56// Get all subdirectories in the template-parts directory7$subdirs = cbo_list_folders($template_parts_dir);89if ($subdirs) {10foreach ($subdirs as $dir) {11// Get the template part name from the directory path12$part_name = basename(rtrim($dir, '/'));13$template_parts[] = $part_name;14}15}1617return $template_parts;18}1920// Usage21$template_parts = get_template_parts();2223echo '<h3>Available Template Parts:</h3>';24if (!empty($template_parts)) {25echo '<ul>';26foreach ($template_parts as $part) {27echo '<li>' . $part . '</li>';28}29echo '</ul>';30} else {31echo '<p>No template parts found.</p>';32}
Creating a Media Browser
1// Create a simple media browser2function simple_media_browser() {3$uploads_dir = wp_upload_dir()['basedir'];4$uploads_url = wp_upload_dir()['baseurl'];56// Get year/month folders7$year_folders = cbo_list_folders($uploads_dir);89echo '<div class="media-browser">';1011if ($year_folders) {12foreach ($year_folders as $year_folder) {13$year = basename(rtrim($year_folder, '/'));1415echo '<div class="year-folder">';16echo '<h3>' . $year . '</h3>';1718// Get month folders within each year19$month_folders = cbo_list_folders($year_folder);2021if ($month_folders) {22echo '<div class="month-folders">';23foreach ($month_folders as $month_folder) {24$month = basename(rtrim($month_folder, '/'));25$relative_path = $year . '/' . $month;2627echo '<div class="month-folder">';28echo '<h4>' . $month . '</h4>';29echo '<a href="' . $uploads_url . '/' . $relative_path . '" target="_blank">View Files</a>';30echo '</div>';31}32echo '</div>';33}3435echo '</div>';36}37} else {38echo '<p>No media folders found.</p>';39}4041echo '</div>';42}4344// Usage45simple_media_browser();
Best Practices
- Always check the return value before using the results, as the function may return false.
- Be cautious with the depth level as higher values can lead to performance issues on directories with many nested subdirectories.
- Use absolute paths when working with directories to avoid path resolution issues.
- Consider caching the results for frequently accessed directories to improve performance.