_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. |