“플러그인 활성화”메시지 기본값 변경


11

WordPress의 관리자가 플러그인을 활성화 할 때마다 플러그인 페이지를 다시로드하면 "활성화 된 플러그인"보고 활성화에 대한 알림이 표시됩니다.

플러그인 활성화 메시지의 스크린 샷

관리자 공지에 표시되는이 텍스트를 변경하는 방법이 있습니까, 아니면 내 맞춤 메시지를 사용해야합니까? 또한 사용자 정의 메시지를 사용해야하는 경우 기본 "플러그인 활성화"메시지가 표시되지 않습니까?

관련 질문 :

복제:

찾은 Pieter에게 감사드립니다.

추가 자료 :

노트

'gettext'필터는 translate()함수를 호출하는 동안에 만 적용되지만 i18n.php의 translate()거의 모든 다른 i18n 함수에서 사용 됩니다 . 여기에는 " Gettext Syntax " 의이 게시물에 나열된 모든 기능이 포함됩니다 .


답변:


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

논리 && 연산자와 is_admin () 및 add_filter ()를 함께 연결 한 이유는 무엇입니까? 사용자가 관리자가 아닌 경우 add_filter가 실행되지 않는 일종의 단락 평가가 있습니까?
gate_engineer

1
훌륭한 답변! +1하고 get_text필터 성능에주의를 기울이기 위해 +10했습니다 .
kaiser

1
예, 비슷한 방식으로 작동합니다 @blackhawk
birgire

1
문제는 리디렉션입니다. 'plugin'GET 매개 변수를 확인 하시겠습니까? 사용할 수없는 경우 check_admin_referer에 연결하고 'activate-plugin_'을 대상으로하십시오. $ plugin 옵션이 활성화되었다는 옵션을 작성하고 plugins.php 페이지로드시 다시 삭제하십시오. recent_activated 옵션이 도움이 될 수 있습니까? @Omer
birgire
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.