Como impedir o redirecionamento para 'About' após a atualização principal?

9

Em wp-admin/includes/update-core.phpencontramos a seguinte linha:

add_action( '_core_updated_successfully', '_redirect_to_about_wordpress' );

Quero remover esta ação, por isso criei um plug-in 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 faz ... nada. Eu ainda sou redirecionado. Testado com instalações de site único e multi site.

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

Atualizar

Com base na resposta de Brady, construo uma versão muito 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 plug-in regular ou como plugin MU.

fuxia
fonte
A _core_updated_successfullyação mencionada pela @Brady parece estar ausente de 3,8. * (> 3,7 ??). Alguma idéia de uma substituição?
krembo99
@ krembo99 Ainda está lá: /wp-admin/includes/update-core.phpno final do arquivo.
fuxia
sim .. meu mal. Estava olhando para uma instalação de núcleo personalizada.
krembo99

Respostas:

6

Não remova a ação, mas adicione a sua antes. Se você remover a ação, nunca receberá a mensagem informando 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 no bate-papo que você mostrou que teve dificuldade em remover a ação, por isso comecei a procurar uma solução que não remova a ação, mas a adicione antes.

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

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

Scott
fonte