Como evitar o redirecionamento para 'About' após o upgrade do núcleo?

8

Em wp-admin/includes/update-core.php , encontramos a seguinte linha:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Eu quero remover essa ação, então criei um plugin mu com o seguinte conteúdo:

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

Não ... nada. Ainda estou redirecionado. Testado com instalações de site único e vários sites.

Acho que sinto falta de algo óbvio, como de costume. :)
Como fazer melhor?

Atualizar

Com base na resposta de Brady, eu construo uma versão 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;
}

Agora, vemos a mensagem de sucesso e nenhuma outra ação é chamada. Você pode baixar o plugin no GitHub . Use-o como plugin normal ou como plugin MU.

    
por fuxia 06.07.2012 / 13:32

1 resposta

5

Não remova a ação, mas adicione a sua antes dela. Se você remover a ação, nunca receberá a mensagem dizendo que ela foi atualizada com êxito. Aqui você pode fornecer suas próprias informações sobre o que fazer a seguir.

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

Sei que no bate-papo você mostrou que teve dificuldade em remover a ação, por isso comecei a procurar uma solução que não removesse a ação, mas que a adicionasse antes.

O código acima é uma cópia da função principal que ele conecta em _core_updated_successfully , mas elimina o redirecionamento e algumas mensagens.

Como você pode ver, há um exit(); no final da função, então se você ligar essa função antes da outra, a saída deve impedir que outros ganchos sejam disparados.

    
por Brady 06.07.2012 / 13:39