it-swarm.com.de

Wie kann ich verhindern, dass ich nach dem Core-Upgrade zu "About" weitergeleitet werde?

In wp-admin/includes/update-core.php finden wir folgende Zeile:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Ich möchte diese Aktion entfernen und habe daher 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 Single Site- und Multi Site-Installationen.

Ich vermisse wie immer etwas Offensichtliches. :)
Wie geht das 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 weitere Aktion aufgerufen. Sie können das Plugin auf GitHub herunterladen . Verwenden Sie es als reguläres Plugin oder als MU-Plugin.

8
fuxia

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 eingeben, 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 haben, die Aktion zu entfernen, und deshalb habe ich mich auf die Suche nach einer Lösung gemacht, die die Aktion nicht entfernt, sondern eine vor ihr hinzufügt.

Der obige Code ist eine Kopie der Kernfunktion, die mit _core_updated_successfully verknüpft ist, entfernt jedoch die Umleitung und einige Nachrichten.

Wie Sie sehen, gibt es am Ende der Funktion eine exit();. Wenn Sie also diese Funktion vor der anderen einbinden, sollte der Ausgang alle weiteren Hooks daran hindern, zu feuern.

5
Brady