"Eklenti Etkinleştirildi" Mesajı Varsayılanını Değiştirme


11

WordPress'teki bir yönetici bir eklentiyi etkinleştirdiğinde, eklenti sayfasının yeniden yüklenmesi üzerine "Etkinleştirilen Eklenti Etkinleştirildi" etkinleştirme raporlaması üzerine bir uyarı görüntülenir.

Eklenti Aktif mesajının ekran görüntüsü

Yönetici bildiriminin içinde görünen bu metni değiştirmenin bir yolu var mı, yoksa kendi özel iletimi kullanmalıyım? Ayrıca, özel bir ileti kullanmam gerekirse, bu varsayılan "Eklenti Etkinleştirildi" iletisini bastırır mı?

İlgili sorular:

Çiftleme:

Bulmak için Pieter'e teşekkürler:

Ek kaynaklar:

Not

'Gettext' filtresinin yalnızca translate()işleve çağrılar sırasında uygulanmasına rağmen translate(), i18n.php dosyasındaki diğer tüm i18n işlevleri tarafından kullanıldığını unutmayın . Bunlar, " Gettext Sözdizimi " ile ilgili bu yayında burada listelenen tüm işlevleri içerir .


Git ve bu soruya bir göz at stackoverflow.com/q/14095642/1908141
Pieter Goosen

Yanıtlar:


14

Bunu deneyebilirsiniz:

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

mesajı beğenilerinize göre değiştirmek için:

tercüme

Daha da geliştirebiliriz:

Filtreyi yalnızca /wp-admins/plugins.phpsayfada etkinleştirmek istiyorsanız, bunun yerine aşağıdakileri kullanabilirsiniz:

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

ile:

/**
 * 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;
}

burada bir eşleşme olur olmaz gettext filtresi geri aramasını kaldırırız.

Yapılan gettext çağrılarının sayısını kontrol etmek istiyorsak, doğru dizeyle eşleşmeden önce bunu kullanabiliriz:

/**
 * 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;
}

ve 301yüklememde çağrı alıyorum: 301

Sadece 10çağrılara indirgeyebilirim :

10

gettext filtresini in_admin_headerkancaya, kancaya ekleyerek load-plugins.php:

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

Bunun, eklentiler etkinleştirildiğinde kullanılan iç yönlendirmeden önce gettext çağrılarını saymayacağına dikkat edin.

Dahili yönlendirme sonrasında filtremizi etkinleştirmek için eklentiler etkinleştirildiğinde kullanılan GET parametrelerini kontrol edebiliriz:

/**
 * 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;
}

ve şöyle kullanın:

b2e_is_activated() && add_filter( 'gettext', 'b2e_gettext', 99, 3 );

önceki kod örneğinde.


1
Çivilenmiş, gettex işlevi. Mükemmel hareket
Pieter Goosen

Neden is_admin () ve add_filter () öğelerini mantıksal bir && operatörü ile bir araya getirdiniz? Kullanıcı bir yönetici değilse, add_filter çalışmazsa bir tür kısa devre değerlendirmesi devam ediyor mu?
gate_engineer

1
Mükemmel cevap! +1 ve get_textfiltreyle performansı takip etmek için +10 olurdu .
kaiser

1
evet bu benzer şekilde çalışması gerekir @blackhawk
birgire

1
Sorun yönlendirme. 'Plugin' GET parametresi kontrol edilsin mi? Mevcut değilse, check_admin_referer 'a bağlanın ve' activ-plugin_ 'hedefleyin. $ plugin etkinleştirildiğini söyleyen bir seçenek yazmak ve sonra plugins.php sayfa yüklemesinde tekrar silmek. Belki de yakın zamanda etkinleştirilen seçenek size yardımcı olabilir? @Omer
birgire
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.