WordPressの管理者がプラグインページをリロードしたときにプラグインをアクティブ化するたびに、アクティブ化が成功すると「Plugin Activated」と報告されて通知が表示されます。
管理者通知内に表示されるこのテキストを変更する方法はありますか、それとも自分のカスタムメッセージを使用する必要がありますか?さらに、カスタムメッセージを使用する必要がある場合、これによりデフォルトの「Plugin Activated」メッセージが表示されなくなりますか?
関連質問:
重複:
Pieterに感謝します。
追加リソース:
注
'gettext'フィルタは
translate()
関数の呼び出し中にのみ適用されますが、translate()
はi18n.php内の他のすべての国際化関数によって使用されます。これらは、この記事の「 Gettext構文 」にリストされているすべての機能を含みます。
これを試すことができます:
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 );
あなたの好みに合わせてメッセージを修正します。
さらに洗練することができます。
/wp-admins/plugins.php
ページでフィルターを有効にしたいだけの場合は、代わりに次のものを使用できます。
add_action( 'load-plugins.php',
function(){
add_filter( 'gettext', 'b2e_gettext', 99, 3 );
}
);
と:
/**
* 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;
}
ここで、マッチしたらすぐにgettext filterコールバックを削除します。
正しい文字列に一致する前に、行われたgettext呼び出しの数を確認したい場合は、これを使用できます。
/**
* 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;
}
そして私は私のインストールで301
呼び出しを受け取ります:
私はそれを10
呼び出しだけに減らすことができます。
in_admin_header
フック内のload-plugins.php
フック内にgettextフィルターを追加することによって、
add_action( 'load-plugins.php',
function(){
add_action( 'in_admin_header',
function(){
add_filter( 'gettext', 'b2e_gettext_debug', 99, 3 );
}
);
}
);
これはプラグインが有効化されたときに使われる内部リダイレクトの前のgettext呼び出しを数えないことに注意してください。
内部リダイレクトであるフィルタ{afterを有効にするために、プラグインが有効になっているときに使用されるGETパラメータをチェックすることができます。
/**
* 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;
}
そしてこのように使う:
b2e_is_activated() && add_filter( 'gettext', 'b2e_gettext', 99, 3 );
前のコード例では。