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

wp_mkdir_p() WP 2.0.1

Рекурсивное создание директории (папки) по указанному пути. Задает права родителей создаваемым папкам.

wp_mkdir_p() - обертка для базовой php функции mkdir(). Функция очищает переданный путь, убирая в нем возможное двойные слэши //. Сохраняет протокол. Создаваемые папки наследуют права родителей.

Хуков нет.

Возвращает

Логические true или false. Также true будет возвращено, если каталог уже существует.

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

wp_mkdir_p( $target );
$target(строка) (обязательный)
Полный путь до директории которую нужно создать.
По умолчанию: нет

Примеры

#1 Демонстрация работы функции

Предположим нам нужно создать директорию в каталоге uploads

if ( wp_mkdir_p('a/really/deep/sub/directory') ){
  echo 'Каталог создан!';
}

#2 Создание каталога внутри /uploads

Этот пример показывает как создать новую папку в каталоге /uploads, во время активации плагина. Может быть полезно, когда у плагина есть функции импорта файлов или возможность загружать файлы и вы хотите сохранять все файлы в определенную папку.

function myplugin_activate() {
	$upload = wp_upload_dir();
	$upload_dir = $upload['basedir'];
	$upload_dir = $upload_dir . '/mypluginfiles';

	if ( ! wp_mkdir_p( $upload_dir ) ){
		echo "Не удалось создать каталог mypluginfiles";
	}
}
register_activation_hook( __FILE__, 'myplugin_activate' );

Код wp mkdir p: wp-includes/functions.php WP 4.9

<?php
function wp_mkdir_p( $target ) {
	$wrapper = null;

	// Strip the protocol.
	if ( wp_is_stream( $target ) ) {
		list( $wrapper, $target ) = explode( '://', $target, 2 );
	}

	// From php.net/mkdir user contributed notes.
	$target = str_replace( '//', '/', $target );

	// Put the wrapper back on the target.
	if ( $wrapper !== null ) {
		$target = $wrapper . '://' . $target;
	}

	/*
	 * Safe mode fails with a trailing slash under certain PHP versions.
	 * Use rtrim() instead of untrailingslashit to avoid formatting.php dependency.
	 */
	$target = rtrim($target, '/');
	if ( empty($target) )
		$target = '/';

	if ( file_exists( $target ) )
		return @is_dir( $target );

	// We need to find the permissions of the parent folder that exists and inherit that.
	$target_parent = dirname( $target );
	while ( '.' != $target_parent && ! is_dir( $target_parent ) ) {
		$target_parent = dirname( $target_parent );
	}

	// Get the permission bits.
	if ( $stat = @stat( $target_parent ) ) {
		$dir_perms = $stat['mode'] & 0007777;
	} else {
		$dir_perms = 0777;
	}

	if ( @mkdir( $target, $dir_perms, true ) ) {

		/*
		 * If a umask is set that modifies $dir_perms, we'll have to re-set
		 * the $dir_perms correctly with chmod()
		 */
		if ( $dir_perms != ( $dir_perms & ~umask() ) ) {
			$folder_parts = explode( '/', substr( $target, strlen( $target_parent ) + 1 ) );
			for ( $i = 1, $c = count( $folder_parts ); $i <= $c; $i++ ) {
				@chmod( $target_parent . '/' . implode( '/', array_slice( $folder_parts, 0, $i ) ), $dir_perms );
			}
		}

		return true;
	}

	return false;
}

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

Из метки: Файловая система (создание удаление директорий файлов)

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

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

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

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