Update auf ältere WordPress-Version von Admin?

7

Ich habe ein Wordpress 2.7.x-Setup, das ich auf die neueste Version 3.2.1 migrieren möchte. Ich muss jedoch ein schrittweises Upgrade durchführen, da einige Plugins zuerst eine ältere Version (3.0.6 IIRC) benötigen.

Wordpress bietet mir jedoch nur die neueste und beste Version zum Upgrade an. Gibt es eine Möglichkeit - vorzugsweise innerhalb des Administrators - den Kern auf eine bestimmte Version zu aktualisieren? Oder bin ich an manuelle Upgrades gebunden?

Gibt es wahrscheinlich eine Möglichkeit, dem WordPress Core Upgrader mitzuteilen, welche Version er auswählen soll? Es wurde erst kürzlich eine Zip heruntergeladen, oder?

hakre
quelle

Antworten:

5

Sie können option_update_coredie Update-URL einbinden und bearbeiten. Als Plugin können Sie Folgendes tun (Denken Sie daran, das Plugin nach dem Aktualisieren von WordPress zu deaktivieren).

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;
}

Ab Version 2.8 müssen Sie auch eine Verbindung herstellen, transient_update_corewie get_transientsie anstelle von verwendet wird. get_optionAußerdem wird hier eine Versionsprüfung durchgeführt, sodass keine Versionen angezeigt werden, die niedriger sind als sie selbst. Das einzige (¿Haupt?) Problem ist, dass die Liste der Versionen manuell hinzugefügt werden muss.

hacksy
quelle
Das ist interessant. Wissen Sie, ob es einen Hook gibt, der mehrere Versionen im Backend als Liste anbietet?
hakre
Nicht, dass ich es
wüsste
Das sieht sehr süß aus. Vielen Dank Hansy, ich werde dies für ein kleines Plugin in Betracht ziehen.
hakre
0

Ich bin mir nicht sicher, wie ich es über den Administrator tun soll, aber es wäre einfach, es mit svn zu erreichen.

Erstellen Sie eine Kopie oder verschieben Sie wp-content und wp-config.php in ein temporäres Verzeichnis. Löschen Sie dann alle WordPress-Dateien und überprüfen Sie den Zweig 2.8, verschieben Sie wp-content und config zurück und führen Sie das Aktualisierungsskript aus.

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
Chris_O
quelle
Nun, warum ich nach Admin gefragt habe, war, dass es sich nur um einen Standard-Hosting-Webserver handelt, für den normalerweise kein SVN verfügbar ist. Alternativ lade ich einfach die Zip-Datei hoch und extrahiere sie (ältere Versionen sind als Pakete auf der WordPress-Website verfügbar). Ich bin nicht auf Probleme gestoßen, die Konfiguration wird nicht überschrieben, nur Akismet, Hallo Dolly und das Standardthema.
hakre
0

Die Lösung von Hansy funktionierte bei mir nicht, da ich WP 3.5 verwendete. Ich wollte auf WP 3.7.8 aktualisieren. Ich habe meine Lösung mit ein paar Änderungen auf Hansys basiert.

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;
}
Greifer
quelle