Alterando a mensagem “Plugin Activated” Default

11

Sempre que um administrador do WordPress ativa um plug-in, após o recarregamento da página do plug-in, um aviso será exibido após o relatório de ativação bem-sucedido "Plug-in Ativado".

Existeumamaneiradealterarestetextoqueaparecedentrodoavisodeadministraçãooudevousarminhaprópriamensagempersonalizada?Alémdisso,seeuprecisarusarumamensagempersonalizada,issoirásuprimiramensagempadrão"Plugin Activated"?

Questões relacionadas:

Duplicar:

Obrigado ao Pieter pela descoberta:

Recursos adicionais:

  

Nota

     

Lembre-se de que, embora o filtro 'gettext' seja aplicado apenas durante as chamadas à função translate() , translate() é usado por praticamente todas as outras funções do i18n em i18n.php . Isso inclui todas as funções listadas aqui neste post em " Sintaxe do Gettext ".

    
por gate_engineer 29.03.2014 / 05:29

1 resposta

14

Você pode tentar isso:

is_admin() && add_filter( 'gettext', 
    function( $translated_text, $untranslated_text, $domain )
    {
        $old = array(
            "Plugin <strong>activated</strong>.",
            "Selected plugins <strong>activated</strong>." 
        );

        $new = "Captain: The Core is stable and the Plugin is <strong>activated</strong> at full Warp speed";

        if ( in_array( $untranslated_text, $old, true ) )
            $translated_text = $new;

        return $translated_text;
     }
, 99, 3 );

para modificar a mensagem para o seu gosto:

Podemosrefiná-loaindamais:

Sevocêquiserativarofiltrosomentenapágina/wp-admins/plugins.php,useoseguinte:

add_action('load-plugins.php',function(){add_filter('gettext','b2e_gettext',99,3);});

com:

/***Translatethe"Plugin activated." string
 */
function b2e_gettext( $translated_text, $untranslated_text, $domain )
{
    $old = array(
        "Plugin <strong>activated</strong>.",
        "Selected plugins <strong>activated</strong>." 
    );

    $new = "Captain: The Core is stable and the Plugin is <strong>activated</strong> at full Warp speed";

    if ( in_array( $untranslated_text, $old, true ) )
        {
            $translated_text = $new;
            remove_filter( current_filter(), __FUNCTION__, 99 );
        }
        return $translated_text;
}

onde removemos o retorno de chamada do filtro gettext assim que tivermos uma correspondência.

Se quisermos verificar o número de chamadas gettext feitas, antes de combinarmos com a string correta, podemos usar isto:

/**
 * Debug gettext filter callback with counter
 */
function b2e_gettext_debug( $translated_text, $untranslated_text, $domain )
{
        static $counter = 0;
        $counter++;

        $old = "Plugin <strong>activated</strong>.";
        $new = "Captain: The Core is stable and the Plugin is <strong>activated</strong> at full Warp speed";
        if ( $untranslated_text === $old )
        {
            $translated_text = $new;
            printf( 'counter: %d - ', $counter );
            remove_filter( current_filter(), __FUNCTION__ , 99 );
        }
        return $translated_text;
}

e recebo 301 chamadas na minha instalação:

Possoreduzi-loparaapenas10chamadas:

adicionando o filtro gettext ao gancho in_admin_header , dentro do load-plugins.php hook:

add_action( 'load-plugins.php',
    function(){
        add_action( 'in_admin_header',
            function(){
                add_filter( 'gettext', 'b2e_gettext_debug', 99, 3 );
            }
        );
    }
);

Observe que isso não contará as chamadas gettext antes do redirecionamento interno usado quando os plug-ins forem ativados.

Para ativar nosso filtro após o redirecionamento interno, podemos verificar os parâmetros GET usados quando plugins são ativados:

/**
 * Check if the GET parameters "activate" and "activate-multi" are set
 */
function b2e_is_activated()
{
    $return         = FALSE;
    $activate       = filter_input( INPUT_GET, 'activate',       FILTER_SANITIZE_STRING );
    $activate_multi = filter_input( INPUT_GET, 'activate-multi', FILTER_SANITIZE_STRING );

    if( ! empty( $activate ) || ! empty( $activate_multi ) )
        $return = TRUE;

    return $return;
}

e use assim:

b2e_is_activated() && add_filter( 'gettext', 'b2e_gettext', 99, 3 );

no exemplo de código anterior.

    
por birgire 29.03.2014 / 09:07