问题描述
我有一个 Wordpress 2.7.x 安装程序,我想迁移到最新版本 3.2.1,但是我需要做一个 stepped-upgrade 一些插件需要一个旧版本 (3.0.6 IIRC) 。
不过 Wordpress 只是为我提供了升级到最新版本。有没有办法 – 优先于管理员 – 将核心更新为特定版本?还是我要手动升级?
有没有办法告诉 wordpress 核心升级器哪个版本选择?最近才下载一个 zip,对吧?
最佳解决方案
您可以挂接 option_update_core 并编辑更新 url,作为插件,您可以做这样的事情 (记住在更新 wordpress 后禁用插件)
add_filter('option_update_core','wpse_26750');
add_filter('transient_update_core','wpse_26750');
function wpse_26750($options){
global $wp_version;
$updates=array(
'2.5'=>'http://wordpress.org/wordpress-2.5.zip',
'2.7.1'=>'http://wordpress.org/wordpress-2.7.1.zip',
'2.8'=>'http://wordpress.org/wordpress-2.8.zip',
'2.8.1'=>'http://wordpress.org/wordpress-2.8.1.zip',
'2.8.3'=>'http://wordpress.org/wordpress-2.8.3.zip',
);
$currentUpdate=$options->updates[0];
//Add Previous updates skipping the ones already passed
foreach($updates as $version=>$updateUrl){
if( version_compare($wp_version,$version) < 0){
$update=new StdClass();
$update->response='upgrade';
$update->url='http://wordpress.org/download/';
$update->package=$updateUrl;
$update->current=$version;
$update->locale=$options->updates[0]->locale;
$options->updates[]=$update;
}
}
unset($options->updates[0]);
//Restore latest update
$options->updates[]=$currentUpdate;
return $options;
}
从 2.8 开始,您也需要挂接 transient_update_core,因为使用 get_transient 而不是 get_option 此外,还有版本检查,所以没有显示低于本身的版本。唯一的 (主要?) 问题是,需要手动添加版本列表。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。