web-dev-qa-db-ja.com

管理者から古いWordpressのバージョンに更新しますか?

Wordpress 2.7.xの設定で最新のバージョン3.2.1に移行したいのですが、一部のプラグインには以前のバージョン(3.0.6 IIRC)が必要なため、段階的アップグレードを行う必要があります。

しかし、Wordpressは私にアップグレードするための最新かつ最高のバージョンを提供しているだけです。コアを特定のバージョンにアップデートする方法はありますか - 優先的には管理者の中にありますか?それとも私は手動でアップグレードする必要がありますか?

どのバージョンを選択するかをWordPressコアアップグレードプログラムに指示する方法はおそらくありますか?つい最近Zipをダウンロードしていましたね。

7
hakre

あなたはoption_update_coreをフックしてアップデートURLを編集することができます、プラグインとしてあなたはこのような何かをすることができます(ワードプレスをアップデートした後にプラグインを無効にすることを忘れないでください)

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をフックする必要があります。また、ここではバージョンチェックが行われるため、それより下位のバージョンは表示されません。唯一の(メジャー?)問題は、バージョンのリストを手動で追加する必要があるということです。

5
hacksy

私はWP 3.5を使っていたので、Hansyの解決策は私にはうまくいきませんでした。 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;
}
0
grappler

私は管理者を通してそれを行う方法がわからないが、それはSVNで達成するのは簡単だろう。

コピーを作成するか、wp-contentとwp-config.phpを一時ディレクトリに移動してから、すべてのWordPressファイルを削除して2.8ブランチをチェックアウトし、wp-contentとconfigを元に戻してから更新スクリプトを実行します。

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
0
Chris_O