函数文档

do_core_upgrade()

💡 云策文档标注

概述

do_core_upgrade() 函数用于升级 WordPress 核心显示,处理核心升级或重新安装的流程。它涉及文件系统操作、权限检查和错误处理。

关键要点

  • 函数接受一个可选布尔参数 $reinstall,默认值为 false,用于区分升级或重新安装操作。
  • 通过 wp_nonce_url() 生成安全的 URL,并基于 $reinstall 参数设置不同的 action 值。
  • 使用 find_core_update() 查找核心更新,如果未找到则直接返回。
  • 在特定条件下允许宽松的文件所有权写入,以提高升级安全性。
  • 通过 WP_Filesystem() 检查文件系统连接,失败时请求凭据并显示错误。
  • 处理文件系统错误,使用 show_message() 显示错误信息。

📄 原文内容

Upgrades WordPress core display.

Parameters

$reinstallbooloptional

Default:false

Source

function do_core_upgrade( $reinstall = false ) {
global $wp_filesystem;

require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';

if ( $reinstall ) {
$url = 'update-core.php?action=do-core-reinstall';
} else {
$url = 'update-core.php?action=do-core-upgrade';
}
$url = wp_nonce_url( $url, 'upgrade-core' );

$version = isset( $_POST['version'] ) ? $_POST['version'] : false;
$locale = isset( $_POST['locale'] ) ? $_POST['locale'] : 'en_US';
$update = find_core_update( $version, $locale );
if ( ! $update ) {
return;
}

/*
* Allow relaxed file ownership writes for User-initiated upgrades when the API specifies
* that it's safe to do so. This only happens when there are no new files to create.
*/
$allow_relaxed_file_ownership = ! $reinstall && isset( $update->new_files ) && ! $update->new_files;

?>

';
return;
}

if ( ! WP_Filesystem( $credentials, ABSPATH, $allow_relaxed_file_ownership ) ) {
// Failed to connect. Error and request again.
request_filesystem_credentials( $url, '', true, ABSPATH, array( 'version', 'locale' ), $allow_relaxed_file_ownership );
echo '

';
return;
}

if ( $wp_filesystem->errors->has_errors() ) {
foreach ( $wp_filesystem->errors->get_error_messages() as $message ) {
show_message( $message );
}
echo '