Comment empêcher la redirection vers «À propos» après la mise à niveau principale?


9

Dans wp-admin/includes/update-core.phpnous trouvons la ligne suivante:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Je souhaite supprimer cette action, j'ai donc créé un plugin mu avec le contenu suivant:

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

Ça ne fait rien. Je suis toujours redirigé. Testé avec des installations à site unique et à sites multiples.

Je suppose que je manque quelque chose d'évident, comme d'habitude. :)
Comment faire mieux?

Mise à jour

Sur la base de la réponse de Brady, je construis une version très 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;
}

Nous voyons maintenant le message de réussite et aucune autre action n'est appelée. Vous pouvez télécharger le plugin sur GitHub . Utilisez-le comme plugin standard ou comme plugin MU.


L' _core_updated_successfullyaction mentionnée par @Brady semble absente de 3.8. * (> 3.7 ??). Des idées de remplacement aa?
krembo99

@ krembo99 Il est toujours là: /wp-admin/includes/update-core.phpà la fin du fichier.
fuxia

ouais .. mon mauvais. Était à la recherche d'une installation de base personnalisée.
krembo99

Réponses:


6

Ne supprimez pas l'action mais ajoutez la vôtre avant celle-ci. Si vous supprimez l'action, vous n'obtiendrez jamais le message indiquant qu'elle a été correctement mise à niveau. Ici, vous pouvez fournir vos propres informations sur la marche à suivre.

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

Je sais que dans le chat, vous avez montré que vous aviez du mal à supprimer l'action, j'ai donc cherché une solution qui ne supprime pas l'action mais en ajoute une avant.

Le code ci-dessus est une copie de la fonction principale à laquelle il s'accroche _core_updated_successfullymais supprime la redirection et quelques messages.

Comme vous pouvez le voir, il y a un exit();à la fin de la fonction, donc si vous accrochez cette fonction avant l'autre, la sortie devrait empêcher tout autre crochet de tirer.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.