Cập nhật lên phiên bản wordpress cũ hơn từ admin?


7

Tôi có một thiết lập Wordpress 2.7.x mà tôi muốn chuyển sang phiên bản mới nhất 3.2.1, tuy nhiên tôi cần thực hiện nâng cấp từng bước vì một số plugin cần phiên bản cũ hơn (3.0.6 IIRC).

Tuy nhiên Wordpress chỉ cung cấp cho tôi phiên bản mới nhất và tốt nhất để nâng cấp lên. Có cách nào - tốt nhất là trong quản trị viên - để cập nhật cốt lõi lên một phiên bản cụ thể không? Hay tôi bị ràng buộc để nâng cấp thủ công?

Có lẽ có một cách để nói với trình nâng cấp lõi wordpress nên chọn phiên bản nào? Nó đã được tải xuống một zip chỉ gần đây, phải không?

Câu trả lời:


5

Bạn có thể nối option_update_corevà chỉnh sửa url cập nhật, như một plugin bạn có thể làm một cái gì đó như thế này (Hãy nhớ tắt plugin sau khi cập nhật 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;
}

Bắt đầu từ 2.8 bạn cũng cần phải treo trên transient_update_corenhư get_transientđược sử dụng thay vì get_option Ngoài ra, có phiên bản kiểm tra ở đây, vì vậy không các phiên bản thấp hơn bản thân được hiển thị. Vấn đề duy nhất (chính?), Là danh sách các phiên bản cần được thêm thủ công.


Nó thật thú vị. Bạn có biết nếu có một cái móc để cung cấp nhiều phiên bản trong phần phụ trợ như một danh sách không?
hakre

Không phải là tôi biết, tôi đang cập nhật câu trả lời của tôi để phù hợp với nhiều phiên bản (vẫn sử dụng cùng một hook)
hacksy

Trông thật ngọt ngào. Cảm ơn rất nhiều Hansy, tôi sẽ xem xét điều này cho một số plugin nhỏ.
hakre

0

Tôi không chắc chắn về cách thực hiện thông qua quản trị viên nhưng sẽ dễ dàng thực hiện với svn.

Tạo một bản sao hoặc di chuyển wp-content và wp-config.php vào thư mục temp sau đó xóa tất cả các tệp WordPress và kiểm tra nhánh 2.8, di chuyển nội dung wp và cấu hình lại, sau đó chạy tập lệnh cập nhật.

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

Chà, tại sao tôi lại yêu cầu quản trị viên bởi vì đó chỉ là một máy chủ lưu trữ web tiêu chuẩn, thông thường họ không có sẵn svn. Những gì tôi làm thay thế chỉ là tải lên các phiên bản zipfile và giải nén nó (các phiên bản cũ hơn có sẵn dưới dạng các gói từ trang web wordpress). Tôi không gặp vấn đề, cấu hình không bị ghi đè, chỉ có akismet, xin chào dolly và chủ đề mặc định.
hakre

0

Giải pháp của Hansy không hiệu quả với tôi khi tôi đang sử dụng WP 3.5. Tôi muốn cập nhật lên WP 3.7.8. Tôi dựa trên giải pháp của mình với Hansy với một vài thay đổi.

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;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.