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

$exclusions
(масив) (з версії 4.9)
Список папок та файлів, які потрібно пропустити.


За замовчуванням: array()

Приклади

0

#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
)
*/
0

#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
)
*/

Зверніть увагу, що крім файлів також були отримані назви вкладених папок.

список змін

З версії 2.6.0Введено.
З версії 4.9.0Added the $exclusions parameter.

Код list_files() WP 6.0.2

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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *