函数文档

_wp_delete_all_temp_backups()

💡 云策文档标注

概述

_wp_delete_all_temp_backups() 函数用于删除临时备份目录中的所有内容,通常在 WordPress 升级过程中清理临时文件。它通过 WordPress 文件系统抽象层操作,确保安全访问文件系统。

关键要点

  • 函数删除位于 wp-content/upgrade-temp-backup/ 目录下的所有文件和子目录。
  • 使用 WP_Filesystem 抽象层处理文件操作,支持 FTP/SSH 等连接方式。
  • 在操作前会检查文件系统访问权限和 WordPress 内容目录是否存在,失败时触发错误并返回。
  • 函数从 WordPress 6.3.0 版本引入。

代码示例

function _wp_delete_all_temp_backups() {
	global $wp_filesystem;

	if ( ! function_exists( 'WP_Filesystem' ) ) {
		require_once ABSPATH . 'wp-admin/includes/file.php';
	}

	ob_start();
	$credentials = request_filesystem_credentials( '' );
	ob_end_clean();

	if ( false === $credentials || ! WP_Filesystem( $credentials ) ) {
		wp_trigger_error( __FUNCTION__, __( 'Could not access filesystem.' ) );
		return;
	}

	if ( ! $wp_filesystem->wp_content_dir() ) {
		wp_trigger_error(
			__FUNCTION__,
			sprintf( __( 'Unable to locate WordPress content directory (%s).' ), 'wp-content' )
		);
		return;
	}

	$temp_backup_dir = $wp_filesystem->wp_content_dir() . 'upgrade-temp-backup/';
	$dirlist         = $wp_filesystem->dirlist( $temp_backup_dir );
	$dirlist         = $dirlist ? $dirlist : array();

	foreach ( array_keys( $dirlist ) as $dir ) {
		if ( '.' === $dir || '..' === $dir ) {
			continue;
		}

		$wp_filesystem->delete( $temp_backup_dir . $dir, true );
	}
}

注意事项

  • 函数依赖于 WP_Filesystem,确保在调用前已正确初始化和连接文件系统。
  • 删除操作是递归的(通过 delete 方法的第二个参数 true),会移除目录及其所有内容。
  • 如果文件系统访问失败或内容目录未找到,函数会触发错误并提前返回,避免意外操作。

📄 原文内容

Deletes all contents in the temporary backup directory.

Source

function _wp_delete_all_temp_backups() {
	global $wp_filesystem;

	if ( ! function_exists( 'WP_Filesystem' ) ) {
		require_once ABSPATH . 'wp-admin/includes/file.php';
	}

	ob_start();
	$credentials = request_filesystem_credentials( '' );
	ob_end_clean();

	if ( false === $credentials || ! WP_Filesystem( $credentials ) ) {
		wp_trigger_error( __FUNCTION__, __( 'Could not access filesystem.' ) );
		return;
	}

	if ( ! $wp_filesystem->wp_content_dir() ) {
		wp_trigger_error(
			__FUNCTION__,
			/* translators: %s: Directory name. */
			sprintf( __( 'Unable to locate WordPress content directory (%s).' ), 'wp-content' )
		);
		return;
	}

	$temp_backup_dir = $wp_filesystem->wp_content_dir() . 'upgrade-temp-backup/';
	$dirlist         = $wp_filesystem->dirlist( $temp_backup_dir );
	$dirlist         = $dirlist ? $dirlist : array();

	foreach ( array_keys( $dirlist ) as $dir ) {
		if ( '.' === $dir || '..' === $dir ) {
			continue;
		}

		$wp_filesystem->delete( $temp_backup_dir . $dir, true );
	}
}

Changelog

Version Description
6.3.0 Introduced.