AnswerBun.com

Update to older wordpress version from admin?

WordPress Development Asked by hakre on December 20, 2020

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 Answers

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.

Correct answer by hacksy on December 20, 2020

@grappler thnx for the solution. Used it to update to a specific version of 5.4.2. Made the version variable for easy integration.

add_filter('pre_site_option_update_core','wpse_26750' );
add_filter('site_transient_update_core','wpse_26750' );
function wpse_26750($updates){
    global $wp_version;

    // New version to update to
    $new_version = "5.4.2";

    // If current version is new_version or higher then stop
    if ( version_compare( $wp_version, $new_version ) >= 0 ) {
        return $updates;
    }

    // Override the update data
    $updates->updates[0]->download = 'https://downloads.wordpress.org/release/wordpress-'.$new_version.'.zip';
    $updates->updates[0]->packages->full = 'https://downloads.wordpress.org/release/wordpress-'.$new_version.'.zip';
    $updates->updates[0]->packages->no_content = 'https://downloads.wordpress.org/release/wordpress-'.$new_version.'-no-content.zip';
    $updates->updates[0]->packages->new_bundled = 'https://downloads.wordpress.org/release/wordpress-'.$new_version.'-new-bundled.zip';
    $updates->updates[0]->current = $new_version;

    return $updates;
}

Answered by khoekman on December 20, 2020

Hansy's solution was not working for me as I was using WP 3.5. I wanted to update to WP 3.7.8. I based my solution on Hansy's with a few changes.

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

Answered by grappler on December 20, 2020

I'm not sure of a way to do it through admin but it would be easy to accomplish with svn.

Make a copy or move wp-content and wp-config.php to a temp directory then delete all the WordPress files and check out the 2.8 branch, move wp-content and config back, then run the update script.

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

Answered by Chris_O on December 20, 2020

Add your own answers!

Related Questions

How to make repeated component/block in Gutenberg

1  Asked on January 1, 2021 by paranoid-android

   

How do I get the category URL from get_the_category?

2  Asked on December 28, 2020 by egr103

       

$wpdb -> Batch insert from XML File?

3  Asked on December 27, 2020 by click-here

         

lazy load comments wordpress on click

1  Asked on December 27, 2020 by sa-eu

   

Hook to use when customer placing order

1  Asked on December 26, 2020 by kevsterino

 

WordPress Ajax Custom Query – High CPU LOAD

0  Asked on December 22, 2020 by techn9ne

     

Update to older wordpress version from admin?

4  Asked on December 20, 2020 by hakre

   

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP