Come impedire il reindirizzamento su "Informazioni" dopo l'aggiornamento del core?


9

In wp-admin/includes/update-core.phptroviamo la seguente riga:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Voglio rimuovere questa azione, quindi ho creato un plugin mu con il seguente contenuto:

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

Non fa ... niente. Sono ancora reindirizzato. Testato con installazioni a sito singolo e multiplo.

Immagino che mi manchi qualcosa di ovvio, come al solito. :)
Come farlo meglio?

Aggiornare

Sulla base della risposta di Brady ho creato una versione molto minimale:

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

Ora vediamo il messaggio di successo e nessuna altra azione viene chiamata. Puoi scaricare il plugin su GitHub . Usalo come plugin normale o come plugin MU.


Il _core_updated_successfullycitato dall'azione @Brady sembra mancare dal 3.8. * (> 3.7 ??). Qualche idea di un sostituto?
krembo99,

@ krembo99 È ancora lì: /wp-admin/includes/update-core.phpalla fine del file.
fuxia

si .. il mio male. Stavo guardando un'installazione core personalizzata.
krembo99,

Risposte:


6

Non rimuovere l'azione, ma aggiungine una prima. Se rimuovi l'azione non riceverai mai il messaggio che dice che è stato aggiornato correttamente. Qui puoi fornire le tue informazioni su cosa fare dopo.

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

So che in chat hai dimostrato di avere difficoltà a rimuovere l'azione, quindi ho iniziato a cercare una soluzione che non rimuove l'azione, ma ne aggiunge una prima.

Il codice sopra è una copia della funzione principale che si aggancia _core_updated_successfullyma rimuove il reindirizzamento e alcuni messaggi.

Come puoi vedere c'è un exit();alla fine della funzione, quindi se si aggancia questa funzione prima dell'altra, l'uscita dovrebbe fermare qualsiasi ulteriore hook da sparare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.