I have a WordPress 2.7.x setup that I would like to migrate to the latest version 3.2.1, however I need to make a stepped-upgrade as some plugins need an older version first (3.0.6 IIRC).
However WordPress is only offering me the latest and greatest version to upgrade to. Is there a way – prefereably within the admin – to update core to a specific version? Or am I bound to manual upgrades?
Is there probably a way to tell the wordpress core upgrader which version to pick? It was downloading a zip only recently, right?
4 s
You can hook on option_update_core
and edit the update url, as a plugin you can do something like this (Remember to disable the plugin after updating 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;
}
Starting 2.8 you also need to hook on transient_update_core
as get_transient
is used instead of get_option
Also, there is version checking here, so no versions lower than itself is shown.
The only (¿major?) issue, is that the list of versions need to added manually.