問題描述
我有一個 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。