Modification du message «Plugin activé» par défaut

11

Chaque fois qu'un administrateur de WordPress active un plug-in, lors du rechargement de la page du plug-in, un avis apparaît lors de l'activation réussie du rapport "Plug-in activé".

Existe-t-ilunmoyendemodifiercetextequiapparaîtdanslanotificationdel'administrateuroudois-jeutilisermonpropremessagepersonnalisé?Deplus,sijedoisutiliserunmessagepersonnalisé,celasupprimera-t-illemessagepardéfaut"Plugin activé"?

Questions connexes:

Dupliquer:

Merci à Pieter pour la découverte:

Ressources supplémentaires:

  

Remarque

     

N'oubliez pas que, bien que le filtre 'gettext' soit appliqué uniquement lors des appels à la fonction translate() , translate() est utilisé par pratiquement toutes les autres fonctions i18n de i18n.php . Celles-ci incluent toutes les fonctions énumérées ici dans ce message sur " Syntaxe de Gettext ".

    
posée gate_engineer 29.03.2014 - 05:29

1 réponse

14

Vous pouvez essayer ceci:

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

pour modifier le message à votre goût:

Nouspouvonsl'affinerdavantage:

Sivoussouhaitezuniquementactiverlefiltresurlapage/wp-admins/plugins.php,vouspouvezutiliserlecodesuivant:

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

avec:

/***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;
}

où nous supprimons le rappel du filtre gettext dès que nous avons une correspondance.

Si nous voulons vérifier le nombre d'appels gettext effectués, avant de faire correspondre la chaîne correcte, nous pouvons utiliser ceci:

/**
 * 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;
}

et je reçois 301 d'appels sur mon installation:

Jepeuxleréduireà10appelsseulement:

en ajoutant le filtre gettext dans le crochet in_admin_header , dans le crochet load-plugins.php :

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

Notez que cela ne comptera pas les appels gettext avant la redirection interne utilisée lorsque les plugins sont activés.

Pour activer notre filtre après la redirection interne, nous pouvons vérifier les paramètres GET utilisés lors de l'activation des plug-ins:

/**
 * 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;
}

et utilisez comme ceci:

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

dans l'exemple de code précédent.

    
réponse donnée birgire 29.03.2014 - 09:07

Lire d'autres questions sur les étiquettes