wp_tempnam()WP 2.6.0

Создает пустой временный перезаписываемый файл с уникальным именем во временном каталоге. После использования файл обязательно нужно удалить с помощью unlink();

Временный каталог можно указать или он будет получен с помощью get_temp_dir().

После использования функции, созданный файл обязательно нужно удалять с помощью unlink().

Имя файла можно указать вручную в первом параметре $filename, оно будет использовано как база для создания действительно уникального имени файла.

Для уникализации переданного имени файла к нему добавляется хэш и расширение .tmp. Например, если указать myfile, то получим: /tmp/myfile-ADfs54f.tmp. Если не указать базовое имя файла, то за базу имени будет взята метка текущего времени: time().

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

require_once ABSPATH . 'wp-admin/includes/file.php';
Основа для: download_url()
1 раз — 0.000405 сек (быстро) | 50000 раз — 5.08 сек (быстро) | PHP 7.1.11, WP 4.9.5

Хуков нет.

Возвращает

Строку. Путь до созданного файла. При этом файл создается физически и его нужно удалить.

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

wp_tempnam( $filename, $dir );
$filename(строка)
Имя файла, которое будет взято за базу, для создания имени файла.
По умолчанию: ''
$dir(строка)
Путь до временного каталога, в котором будет подбираться имя файла. Если не указать, то каталог будет получен через функцию get_temp_dir().
По умолчанию: ''

Примеры

0

#1 Пример того что выводит фукнция

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

$filename = wp_tempnam(); //> /tmp/1524879129-OkwJkv.tmp

// изменяем файл и делаем с ним что-либо

unlink( $filename ); // удаляем файл

Еще примеры:

$filename = wp_tempnam( 'my_log_file' );     //> /tmp/my_log_file-BmwSQw.tmp
unlink( $filename );

$filename = wp_tempnam( 'my_log_file.log' ); //> /tmp/my_log_file-AreTYU.tmp
unlink( $filename );

$filename = wp_tempnam( '', $_SERVER['DOCUMENT_ROOT'].'/' ); //> /home/example.com/public_html/1524879213-ieQsRX.tmp
unlink( $filename );

Список изменений

С версии 2.6.0 Введена.

Код wp_tempnam() WP 6.6.2

function wp_tempnam( $filename = '', $dir = '' ) {
	if ( empty( $dir ) ) {
		$dir = get_temp_dir();
	}

	if ( empty( $filename ) || in_array( $filename, array( '.', '/', '\\' ), true ) ) {
		$filename = uniqid();
	}

	// Use the basename of the given file without the extension as the name for the temporary directory.
	$temp_filename = basename( $filename );
	$temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename );

	// If the folder is falsey, use its parent directory name instead.
	if ( ! $temp_filename ) {
		return wp_tempnam( dirname( $filename ), $dir );
	}

	// Suffix some random data to avoid filename conflicts.
	$temp_filename .= '-' . wp_generate_password( 6, false );
	$temp_filename .= '.tmp';
	$temp_filename  = wp_unique_filename( $dir, $temp_filename );

	/*
	 * Filesystems typically have a limit of 255 characters for a filename.
	 *
	 * If the generated unique filename exceeds this, truncate the initial
	 * filename and try again.
	 *
	 * As it's possible that the truncated filename may exist, producing a
	 * suffix of "-1" or "-10" which could exceed the limit again, truncate
	 * it to 252 instead.
	 */
	$characters_over_limit = strlen( $temp_filename ) - 252;
	if ( $characters_over_limit > 0 ) {
		$filename = substr( $filename, 0, -$characters_over_limit );
		return wp_tempnam( $filename, $dir );
	}

	$temp_filename = $dir . $temp_filename;

	$fp = @fopen( $temp_filename, 'x' );

	if ( ! $fp && is_writable( $dir ) && file_exists( $temp_filename ) ) {
		return wp_tempnam( $filename, $dir );
	}

	if ( $fp ) {
		fclose( $fp );
	}

	return $temp_filename;
}