web-dev-qa-db-ja.com

「Plugin Activated」メッセージのデフォルトの変更

WordPressの管理者がプラグインページをリロードしたときにプラグインをアクティブ化するたびに、アクティブ化が成功すると「Plugin Activated」と報告されて通知が表示されます。

Screenshot of Plugin Activated message

管理者通知内に表示されるこのテキストを変更する方法はありますか、それとも自分のカスタムメッセージを使用する必要がありますか?さらに、カスタムメッセージを使用する必要がある場合、これによりデフォルトの「Plugin Activated」メッセージが表示されなくなりますか?

関連質問:

重複:

Pieterに感謝します。

追加リソース:

'gettext'フィルタはtranslate()関数の呼び出し中にのみ適用されますが、translate()i18n.php内の他のすべての国際化関数によって使用されます。これらは、この記事の「 Gettext構文 」にリストされているすべての機能を含みます。

11
gate_engineer

これを試すことができます:

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

あなたの好みに合わせてメッセージを修正します。

translated

さらに洗練することができます。

/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呼び出しを受け取ります: 301

私はそれを10呼び出しだけに減らすことができます。

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

前のコード例では。

14
birgire