「プラグインがアクティブ」メッセージのデフォルトの変更


11

WordPressの管理者がプラグインをアクティブ化するときはいつでも、プラグインページのリロード時に、アクティブ化が成功すると「プラグインがアクティブ化されました」というレポートが表示されます。

Plugin Activatedメッセージのスクリーンショット

管理通知内に表示されるこのテキストを変更する方法はありますか、または独自のカスタムメッセージを使用する必要がありますか?さらに、カスタムメッセージを使用する必要がある場合、デフォルトの「プラグインがアクティブ化されました」メッセージが抑制されますか?

関連する質問:

重複:

発見してくれたPieterに感謝:

追加リソース:

注意

'gettext'フィルターはtranslate()関数の呼び出し中にのみ適用されますが、i18n.phptranslate()内の他のすべてのi18n関数で実質的に使用されることに注意してください。これらには、この「Gettext構文」に関するこの投稿に記載されているすべての関数が含まれます。


行き、この質問を見てください。stackoverflow.com
q/14095642/

回答:


14

あなたはこれを試すことができます:

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フィルターコールバックを削除します。

行われた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フック内のフック内にgettextフィルターを追加しますload-plugins.php

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

これは、プラグインがアクティブ化されるときに使用される内部リダイレクトの前のgettext呼び出しをカウントしないことに注意してください。

内部リダイレクトのにフィルターをアクティブ化するは、プラグインがアクティブ化されるときに使用される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 );

前のコード例では。


1
gettex関数を使用しました。すばらしい動き
Pieter Goosen 14年

なぜ論理&&演算子でis_admin()とadd_filter()をつなぎ合わせたのですか?ユーザーが管理者でない場合、add_filterが実行されないような何らかの短絡評価が行われていますか?
gate_engineer 14年

1
素晴らしい答えです!get_textフィルターのパフォーマンスを監視するために、+ 1と+10にします。
カイザー

1
はい、同様の方法で動作するはずです。@ blackhawk
バージール

1
問題はリダイレクトです。「プラグイン」GETパラメータを確認しますか?使用できない場合は、check_admin_refererをフックして 'activate-plugin_'をターゲットに設定します。$ pluginを使用して、アクティブ化されていることを示すオプションを記述し、plugins.phpページの読み込み時に再度削除します。たぶん最近のアクティブ化オプションが役立ちますか?新しい質問@Omer
バージニア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.