Wie kann verhindert werden, dass nach dem Core-Upgrade auf "Info" umgeleitet wird?

9

In wp-admin/includes/update-core.phpfinden wir die folgende Zeile:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Ich möchte diese Aktion entfernen, deshalb habe ich ein mu-Plugin mit folgendem Inhalt erstellt:

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

Es macht ... nichts. Ich werde immer noch umgeleitet. Getestet mit Installationen an einem Standort und an mehreren Standorten.

Ich vermisse wie immer etwas Offensichtliches. :)
Wie geht es besser?

Aktualisieren

Basierend auf Bradys Antwort baue ich eine sehr minimale Version:

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

Jetzt sehen wir die Erfolgsmeldung und es wird keine andere Aktion aufgerufen. Sie können das Plugin auf GitHub herunterladen . Verwenden Sie es als reguläres Plugin oder als MU-Plugin.

Fuxia
quelle
Die _core_updated_successfullyvon @Brady erwähnte Aktion scheint in 3.8. * (> 3.7 ??) zu fehlen. Irgendwelche Ideen für einen Ersatz?
krembo99
@ krembo99 Es ist immer noch da: /wp-admin/includes/update-core.phpam Ende der Datei.
Fuxia
yep .. mein schlechtes. War auf der Suche nach einer benutzerdefinierten Kerninstallation.
krembo99

Antworten:

6

Entfernen Sie die Aktion nicht, sondern fügen Sie Ihre eigene hinzu. Wenn Sie die Aktion entfernen, wird nie die Meldung angezeigt, dass das Upgrade erfolgreich durchgeführt wurde. Hier können Sie Ihre eigenen Informationen darüber bereitstellen, was als nächstes zu tun ist.

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

Ich weiß, dass Sie im Chat gezeigt haben, dass Sie Schwierigkeiten beim Entfernen der Aktion hatten. Deshalb habe ich mich auf die Suche nach einer Lösung gemacht, bei der die Aktion nicht entfernt, sondern eine hinzugefügt wird.

Der obige Code ist eine Kopie der Kernfunktion, die er einbindet, _core_updated_successfullyaber die Umleitung und einige Nachrichten entfernt.

Wie Sie sehen, befindet sich exit();am Ende der Funktion eine. Wenn Sie diese Funktion vor der anderen einhaken, sollte der Ausgang verhindern, dass weitere Haken ausgelöst werden.

Scott
quelle