我有一个Wordpress 2.7。x安装程序,我想迁移到最新版本3.2.1,但是我需要进行逐步升级,因为一些插件需要先使用较旧版本(3.0.6 IIRC)。
然而Wordpress只提供给我最新和最好的升级版本。是否有一种方法可以将core更新到特定版本(最好是在管理员内部)?还是我必须手动升级?
有没有办法告诉wordpress核心升级程序选择哪个版本?最近才下载了一个zip,对吧?
我有一个Wordpress 2.7。x安装程序,我想迁移到最新版本3.2.1,但是我需要进行逐步升级,因为一些插件需要先使用较旧版本(3.0.6 IIRC)。
然而Wordpress只提供给我最新和最好的升级版本。是否有一种方法可以将core更新到特定版本(最好是在管理员内部)?还是我必须手动升级?
有没有办法告诉wordpress核心升级程序选择哪个版本?最近才下载了一个zip,对吧?
你可以继续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_core
像get_transient
使用而不是get_option
此外,这里还有版本检查,因此不会显示低于自身的版本。唯一的(?少校?)问题是需要手动添加版本列表。我不确定有什么方法可以通过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
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;
}
@解决方案的抓斗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;
}
如果我写一个私有插件,有没有办法使用WordPress自动更新机制来更新它 我想封装这个功能,但它是我自己的5个博客特有的,所以它不是公共插件资源的好候选。但我喜欢这种简单的更新机制 有没有办法做到这一点