¿Cómo evitar el redireccionamiento a 'Acerca de' después de la actualización principal?

9

En wp-admin/includes/update-core.phpencontramos la siguiente línea:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Quiero eliminar esta acción, así que creé un complemento mu con el siguiente contenido:

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

Hace ... nada. Todavía estoy redirigido. Probado con instalaciones de un solo sitio y de múltiples sitios.

Supongo que extraño algo obvio, como siempre. :)
¿Cómo hacerlo mejor?

Actualizar

Basado en la respuesta de Brady, construyo una versión muy mínima:

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

Ahora vemos el mensaje de éxito y no se llama a ninguna otra acción. Puede descargar el complemento en GitHub . Úselo como complemento regular o como complemento MU.

fuxia
fuente
La _core_updated_successfullyacción mencionada por @Brady parece faltar en 3.8. * (> 3.7 ??). ¿Alguna idea de un reemplazo?
krembo99
@ krembo99 Sigue ahí: /wp-admin/includes/update-core.phpal final del archivo.
fuxia
Sí ... mi mal. Estaba mirando una instalación central personalizada.
krembo99

Respuestas:

6

No elimines la acción, pero agrega la tuya antes. Si elimina la acción, nunca recibirá el mensaje que indica que se actualizó correctamente. Aquí puede proporcionar su propia información sobre qué hacer a continuación.

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

Sé que en el chat mostraste que tenías dificultades para eliminar la acción, así que me puse a buscar una solución que no elimine la acción sino que agregue una antes.

El código anterior es una copia de la función principal que conecta _core_updated_successfullypero elimina la redirección y algunos mensajes.

Como puede ver, hay una función exit();al final de la función, por lo que si conecta esta función antes que la otra, la salida debería evitar que se activen más ganchos.

Scott
fuente