Dans wp-admin/includes/update-core.php
on trouve la ligne suivante:
add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );
Je veux supprimer cette action, alors j'ai 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 sur un ou plusieurs sites.
Je suppose que quelque chose d’évident me manque, comme d’habitude. :)
Comment le faire mieux?
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 ordinaire ou comme plugin MU.
Ne supprimez pas l'action mais ajoutez la vôtre avant celle-ci. Si vous supprimez l'action, vous ne recevrez jamais le message indiquant que la mise à niveau a été effectuée avec succès. Ici, vous pouvez fournir vos propres informations sur ce qu'il faut faire ensuite.
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 en conversation que vous avez montré que vous aviez du mal à supprimer l'action, alors je me suis mis à la recherche d'une solution qui n'enlève pas l'action mais en ajoute une avant celle-ci.
Le code ci-dessus est une copie de la fonction principale à laquelle il se connecte sur _core_updated_successfully
mais supprime la redirection et quelques messages.
Comme vous pouvez le constater, il y a une exit();
à la fin de la fonction. Par conséquent, si vous décrochez cette fonction avant l'autre, la sortie devrait empêcher tout autre crochet de tirer.