À 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é".
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 ".
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:
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:
Je peux le réduire aux seuls appels 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.