J'ai une configuration Wordpress 2.7.x que je voudrais migrer vers la dernière version 3.2.1, cependant, je dois effectuer une mise à niveau progressive, car certains plug-ins nécessitent une version antérieure (3.0.6 IIRC).
Cependant, Wordpress ne me propose que la version la plus récente et la plus performante à mettre à niveau. Existe-t-il un moyen - de préférence au sein de l’administrateur - de mettre à jour le noyau vers une version spécifique? Ou suis-je lié aux mises à niveau manuelles?
Existe-t-il probablement un moyen de dire à la centrale de traitement de wordpress quelle version choisir? Il téléchargeait un Zip que récemment, non?
Vous pouvez vous connecter à option_update_core
et éditer l'URL de la mise à jour. En tant que plug-in, vous pouvez faire quelque chose comme ceci (n'oubliez pas de désactiver le plug-in après la mise à jour de 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;
}
À partir de la version 2.8, vous devez également vous accrocher à transient_update_core
car get_transient
est utilisé à la place de get_option
De plus, il y a vérification de version ici, donc aucune version inférieure à celle-ci n'est affichée. Le seul problème (¿majeur?) Est que la liste des versions doit être ajoutée manuellement.
La solution de Hansy ne fonctionnait pas pour moi car j'utilisais WP 3.5. Je voulais mettre à jour vers WP 3.7.8. J'ai basé ma solution sur celle de Hansy avec quelques modifications.
add_filter('pre_site_option_update_core','wpse_26750' );
add_filter('site_transient_update_core','wpse_26750' );
function wpse_26750($updates){
global $wp_version;
// If current version is 3.7.8 or higher then stop
if ( version_compare( $wp_version, '3.7.8' ) >= 0 ) {
return $updates;
}
$updates->updates[0]->download = 'https://downloads.wordpress.org/release/wordpress-3.7.8.Zip';
$updates->updates[0]->packages->full = 'https://downloads.wordpress.org/release/wordpress-3.7.8.Zip';
$updates->updates[0]->packages->no_content = 'https://downloads.wordpress.org/release/wordpress-3.7.8-no-content.Zip';
$updates->updates[0]->packages->new_bundled = 'https://downloads.wordpress.org/release/wordpress-3.7.8-new-bundled.Zip';
$updates->updates[0]->current = '3.7.8';
return $updates;
}
Je ne suis pas sûr de pouvoir le faire via admin mais ce serait facile à accomplir avec svn.
Faites une copie ou déplacez wp-content et wp-config.php dans un répertoire temporaire, supprimez tous les fichiers WordPress et extrayez la branche 2.8, déplacez wp-content et config, puis exécutez le script de mise à jour.
mv wordpress/wp-content /tmp/wp-content
mv wordpress/wp-config.php /tmp/wp-config.php
rm -rf wordpress
mkdir wordpress
cd wordpress
svn co http://core.svn.wordpress.org/tags/2.7.x/ .
mv /tmp/wp-content/* wordpress/wp-content/
mv /tmp/wp-config.php wordpress/wp-config.php
//Run upgrade script: http://yoursite/wordpress/wp-admin/upgrade.php
//Check out the next version
cd wordpress
svn sw http://core.svn.wordpress.org/tags/2.8.x .
//Run upgrade script
//Rinse and repeat