Bagaimana mencegah pengalihan ke 'Tentang' setelah peningkatan inti?

9

Di wp-admin/includes/update-core.phpkami menemukan baris berikut:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Saya ingin menghapus tindakan ini, jadi saya membuat plugin mu dengan konten berikut:

<?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' );
}

Itu tidak ... tidak ada. Saya masih diarahkan. Diuji dengan instalasi satu situs dan multi situs.

Saya kira saya kehilangan sesuatu yang jelas, seperti biasa. :)
Bagaimana cara melakukannya dengan lebih baik?

Memperbarui

Berdasarkan jawaban Brady, saya membuat versi yang sangat minim:

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

Sekarang kita melihat pesan sukses dan tidak ada tindakan lain yang dipanggil. Anda dapat mengunduh plugin di GitHub . Gunakan sebagai plugin biasa atau sebagai plugin MU.

fuxia
sumber
Tindakan yang _core_updated_successfullydisebutkan oleh @Brady tampaknya hilang dari 3,8. * (> 3,7 ??). Adakah ide pengganti?
krembo99
@ krembo99 Masih ada /wp-admin/includes/update-core.phpdi sana: di akhir file.
fuxia
ya .. salahku. Sedang melihat instalasi inti kustom.
krembo99

Jawaban:

6

Jangan hapus tindakan tetapi tambahkan sendiri sebelum itu. Jika Anda menghapus tindakan, Anda tidak akan pernah mendapatkan pesan yang mengatakan itu berhasil ditingkatkan. Di sini Anda dapat memberikan info sendiri tentang apa yang harus dilakukan selanjutnya.

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

Saya tahu dalam obrolan Anda menunjukkan bahwa Anda mengalami kesulitan menghapus tindakan, jadi saya mulai mencari solusi yang tidak menghapus tindakan tetapi menambahkan satu sebelum itu.

Kode di atas adalah salinan dari fungsi inti yang disambungkan _core_updated_successfullytetapi menghapus redirect dan beberapa pesan.

Seperti yang Anda lihat ada exit();di akhir fungsi jadi jika Anda mengaitkan fungsi ini sebelum yang lain maka pintu keluar harus menghentikan kait lebih lanjut dari penembakan.

Scott
sumber