从管理员更新到较旧的WordPress版本?

时间:2011-08-24 作者:hakre

我有一个Wordpress 2.7。x安装程序,我想迁移到最新版本3.2.1,但是我需要进行逐步升级,因为一些插件需要先使用较旧版本(3.0.6 IIRC)。

然而Wordpress只提供给我最新和最好的升级版本。是否有一种方法可以将core更新到特定版本(最好是在管理员内部)?还是我必须手动升级?

有没有办法告诉wordpress核心升级程序选择哪个版本?最近才下载了一个zip,对吧?

4 个回复
最合适的回答,由SO网友:hacksy 整理而成

你可以继续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_coreget_transient 使用而不是get_option此外,这里还有版本检查,因此不会显示低于自身的版本。唯一的(?少校?)问题是需要手动添加版本列表。

SO网友:Chris_O

我不确定有什么方法可以通过admin实现,但使用svn很容易实现。

复制或移动wp内容和wp配置。php到临时目录,然后删除所有WordPress文件并签出2.8分支,将wp内容和配置移回,然后运行更新脚本。

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

SO网友:grappler

Hansy的解决方案对我不起作用,因为我使用的是WP 3.5。我想更新到WP 3.7.8。我基于Hansy的解决方案进行了一些修改。

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

SO网友:khoekman

@解决方案的抓斗thnx。使用它更新到5.4.2的特定版本。使版本变量易于集成。

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

结束

相关推荐

Updates for a private plugin?

如果我写一个私有插件,有没有办法使用WordPress自动更新机制来更新它 我想封装这个功能,但它是我自己的5个博客特有的,所以它不是公共插件资源的好候选。但我喜欢这种简单的更新机制 有没有办法做到这一点