WordPress как на ладони
wordpress jino

list_files() WP 2.6.0

Получит список файлов из указанной директории и из всех вложенных в нее директорий (до 100 уровней вложенности).

Сколько уровней вложенности нужно просматривать, можно указать во втором параметре $levels.

При указанном ограничении вложенности, функция получит название папки, если дойдет до указанного лимита а в папке есть еще вложенные папки. Так в итоговом списке файлов, будут файлы и папки, см. пример 2.

Для работы функции вне админки, нужно подключить файл:

require_once ABSPATH . 'wp-admin/includes/file.php';

Хуков нет.

Возвращает

Массив/false. Массив путей файлов - когда файлы были получены. False - если не удалось получить файлы.

Использование

$list = list_files( $folder = '', $levels = 100 );
$folder(строка)
Путь до папки из которой нужно получить файлы.
По умолчанию: empty
$levels(число)

Уровень вложенности папок, до которого нужно просматривать файлы. ПО умолчанию 100 (лимит PHP).

Например, если тут указать 1, то будут собраны только файлы из указанной папки. Если 2, то будут собраны файлы из указанной папки и из папок в ней. Если 3, то из папки, её папок и папок её папок...
По умолчанию: 100

Примеры

#1 Пример чтения файлов из каталога

Для примера работы функции, давайте получит все файлы WordPress.

//require_once ABSPATH . 'wp-admin/includes/file.php';

$files = list_files( ABSPATH );

print_r( $files );

/* Получим
Array
(
	[0] => /home/t/public_html/xmlrpc.php
	[1] => /home/t/public_html/wp-mail.php
	[2] => /home/t/public_html/wp-includes/ms-settings.php
	...
	[991] => /home/t/public_html/wp-admin/css/colors/sunrise/colors.css
)
*/

#2 Пример получения файлов с ограничением просмотра вложенных папок

//require_once ABSPATH . 'wp-admin/includes/file.php';

$files = list_files( ABSPATH, 1 );

print_r( $files );

/* Получим
Array
(
	[0] => /home/t/public_html/xmlrpc.php
	[1] => /home/t/public_html/wp-mail.php
	[2] => /home/t/public_html/wp-includes/
	[3] => /home/t/public_html/wp-settings.php
	[4] => /home/t/public_html/wp-config-sample.php
	[5] => /home/t/public_html/wp-comments-post.php
	[6] => /home/t/public_html/wp-admin/
	[7] => /home/t/public_html/wp-blog-header.php
	[8] => /home/t/public_html/wp-links-opml.php
	[9] => /home/t/public_html/index.php
	[10] => /home/t/public_html/wp-login.php
	[11] => /home/t/public_html/wp-trackback.php
	[12] => /home/t/public_html/wp-activate.php
	[13] => /home/t/public_html/wp-load.php
	[14] => /home/t/public_html/wp-signup.php
	[15] => /home/t/public_html/wp-cron.php
)
*/

Обратите внимание, что кроме файлов также были получены и названия вложенных папок.

Код list files: wp-admin/includes/file.php WP 4.9

<?php
function list_files( $folder = '', $levels = 100, $exclusions = array() ) {
	if ( empty( $folder ) ) {
		return false;
	}

	$folder = trailingslashit( $folder );

	if ( ! $levels ) {
		return false;
	}

	$files = array();

	$dir = @opendir( $folder );
	if ( $dir ) {
		while ( ( $file = readdir( $dir ) ) !== false ) {
			// Skip current and parent folder links.
			if ( in_array( $file, array( '.', '..' ), true ) ) {
				continue;
			}

			// Skip hidden and excluded files.
			if ( '.' === $file[0] || in_array( $file, $exclusions, true ) ) {
				continue;
			}

			if ( is_dir( $folder . $file ) ) {
				$files2 = list_files( $folder . $file, $levels - 1 );
				if ( $files2 ) {
					$files = array_merge($files, $files2 );
				} else {
					$files[] = $folder . $file . '/';
				}
			} else {
				$files[] = $folder . $file;
			}
		}
	}
	@closedir( $dir );

	return $files;
}

Cвязанные функции

Из раздела: Вспомогательные

list_files Комментариев нет

Здравствуйте, !

Ваш комментарий