Làm cách nào để ngăn chặn chuyển hướng đến 'Giới thiệu' sau khi nâng cấp cốt lõi?


9

Trong wp-admin/includes/update-core.phpchúng tôi tìm thấy dòng sau:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Tôi muốn xóa hành động này, vì vậy tôi đã tạo một plugin mu với nội dung sau:

<?php # -*- coding: utf-8 -*-
add_action( '_core_updated_successfully', 't5_no_redirect_after_update', 0 );

function t5_no_redirect_after_update()
{
    remove_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );
}

Nó không có gì cả. Tôi vẫn được chuyển hướng. Đã thử nghiệm với cài đặt trang web đơn và đa trang web.

Tôi đoán tôi bỏ lỡ một cái gì đó rõ ràng, như thường lệ. :)
Làm thế nào để làm điều đó tốt hơn?

Cập nhật

Dựa trên câu trả lời của Brady, tôi xây dựng một phiên bản rất tối thiểu:

<?php # -*- coding: utf-8 -*-
/* Plugin Name: T5 No redirect after core upgrade. */
add_action( '_core_updated_successfully', 't5_no_redirect_after_update', 0 );

function t5_no_redirect_after_update()
{
    show_message( __('WordPress updated successfully') );

    // Include admin-footer.php and exit
    include(ABSPATH . 'wp-admin/admin-footer.php');

    exit;
}

Bây giờ chúng ta thấy thông điệp thành công và không có hành động nào khác được gọi. Bạn có thể tải xuống plugin trên GitHub . Sử dụng nó như plugin thông thường hoặc như plugin MU.


Hành động _core_updated_successfullyđược đề cập bởi @Brady dường như bị thiếu trong 3,8. * (> 3.7 ??). Bất kỳ ý tưởng của aa thay thế?
krembo99

@ krembo99 Nó vẫn ở đó: /wp-admin/includes/update-core.phpở cuối tập tin.
fuxia

vâng .. xấu của tôi. Đã nhìn vào một cài đặt lõi tùy chỉnh.
krembo99

Câu trả lời:


6

Đừng xóa hành động mà thêm hành động của bạn trước nó. Nếu bạn xóa hành động, bạn sẽ không bao giờ nhận được thông báo nói rằng nó đã được nâng cấp thành công. Tại đây bạn có thể cung cấp thông tin của riêng bạn về những việc cần làm tiếp theo.

function tp_dont_redirect_to_about_wordpress( $new_version ) {
    global $wp_version, $pagenow, $action;

    if ( version_compare( $wp_version, '3.4-RC1', '>=' ) )
        return;

    // Ensure we only run this on the update-core.php page. wp_update_core() could be called in other contexts.
    if ( 'update-core.php' != $pagenow )
        return;

    if ( 'do-core-upgrade' != $action && 'do-core-reinstall' != $action )
        return;

    // Load the updated default text localization domain for new strings
    load_default_textdomain();

    // See do_core_upgrade()
    show_message( __('WordPress updated successfully') );
    show_message( '<span>' . sprintf( __( 'Welcome to WordPress %1$s. <a href="%2$s">Learn more</a>.' ), $new_version, esc_url( self_admin_url( 'about.php?updated' ) ) ) . '</span>' );
    echo '</div>';

    // Include admin-footer.php and exit
    include(ABSPATH . 'wp-admin/admin-footer.php');
    exit();
}
add_action( '_core_updated_successfully', 'tp_dont_redirect_to_about_wordpress', 1, 1 );

Tôi biết trong trò chuyện, bạn đã cho thấy rằng bạn gặp khó khăn khi xóa hành động nên tôi bắt đầu tìm kiếm một giải pháp không xóa hành động mà chỉ thêm một hành động trước đó.

Đoạn mã trên là một bản sao của chức năng cốt lõi mà nó móc vào _core_updated_successfullynhưng loại bỏ chuyển hướng và một vài thông báo.

Như bạn có thể thấy có một exit();phần cuối của hàm, vì vậy nếu bạn móc hàm này trước hàm kia thì lối thoát sẽ dừng bất kỳ móc nào tiếp tục bắn.

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.