web-dev-qa-db-fra.com

Changer le message "Plugin activé" par défaut

À chaque fois qu'un administrateur de WordPress active un plug-in, lors du rechargement de la page du plug-in, un avis apparaîtra si l'activation réussie indique le rapport "Plug-in activé".

Screenshot of Plugin Activated message

Existe-t-il un moyen de modifier ce texte qui apparaît dans la notification de l'administrateur ou dois-je utiliser mon propre message personnalisé? De plus, si je dois utiliser un message personnalisé, cela supprimera-t-il le message par défaut "Plugin activé"?

Questions connexes:

Dupliquer:

Merci à Pieter pour la découverte:

Ressources supplémentaires:

Note

Rappelez-vous que, bien que le filtre 'gettext' ne soit appliqué que lors d'appels à la fonction translate(), translate() est utilisé par pratiquement toutes les autres fonctions i18n de i18n.php. Celles-ci incluent toutes les fonctions listées ici dans ce post sur " Syntaxe Gettext ".

11
gate_engineer

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:

translated

Nous pouvons l'affiner davantage:

Si vous souhaitez uniquement activer le filtre sur la page /wp-admins/plugins.php, vous pouvez également utiliser les éléments suivants:

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

avec:

/**
 * Translate the "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 effectués par gettext, 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 des appels 301 sur mon installation: 301

Je peux le réduire aux seuls appels 10:

10

en ajoutant le filtre gettext dans le hook in_admin_header, dans le hook 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 de gettext avant la redirection interne utilisée lorsque les plugins sont activés.

Pour activer notre filtre after la redirection interne, nous pouvons vérifier les paramètres GET utilisés lorsque les plugins sont activés:

/**
 * 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 utiliser comme ceci:

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

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

14
birgire