การเปลี่ยนข้อความ“ เปิดใช้งานปลั๊กอิน” เป็นค่าเริ่มต้น


11

เมื่อใดก็ตามที่ผู้ดูแลระบบใน WordPress เปิดใช้งานปลั๊กอินเมื่อมีการโหลดหน้าปลั๊กอินจะมีการแจ้งเตือนปรากฏขึ้นเมื่อการเปิดใช้งานการรายงานการเปิดใช้งานสำเร็จ "ปลั๊กอินเปิดใช้งาน"

สกรีนช็อตของข้อความเปิดใช้งานปลั๊กอิน

มีวิธีในการเปลี่ยนข้อความนี้ที่ปรากฏในประกาศของผู้ดูแลระบบหรือฉันต้องใช้ข้อความที่กำหนดเองของตัวเอง? นอกจากนี้หากฉันต้องใช้ข้อความที่กำหนดเองสิ่งนี้จะระงับข้อความ "เปิดใช้งานปลั๊กอิน" เริ่มต้นหรือไม่

คำถามที่เกี่ยวข้อง:

ซ้ำ:

ขอบคุณ Pieter สำหรับการค้นหา:

แหล่งข้อมูลเพิ่มเติม:

บันทึก

Rememember ว่าแม้ 'gettext' กรองถูกนำไปใช้เฉพาะในช่วงการเรียกไปยังtranslate()ฟังก์ชั่นtranslate()การใช้งานโดยแทบทุกฟังก์ชั่นอื่น ๆ ใน i18n i18n.php เหล่านี้รวมถึงฟังก์ชั่นทั้งหมดที่ระบุไว้ที่นี่ในโพสต์นี้ใน " Gettext Syntax "


ไปและดูที่คำถามนี้stackoverflow.com/q/14095642/1908141
Pieter Goosen

คำตอบ:


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

โดยการเพิ่มตัวกรอง gettext ภายในin_admin_headerเบ็ดภายใน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 และฉันจะเพิ่ม 10 สำหรับการดูประสิทธิภาพของget_textตัวกรอง
ไกเซอร์

1
ใช่ว่าควรจะทำงานในลักษณะที่คล้ายกัน @blackhawk
birgire

1
ปัญหาคือการเปลี่ยนเส้นทาง ตรวจสอบพารามิเตอร์ 'ปลั๊กอิน' GET หรือไม่ หากไม่สามารถใช้งานได้อาจจะลองตรวจสอบและ check_admin_referer และกำหนดเป้าหมาย 'activate-plugin_' $ plugin เพื่อเขียนตัวเลือกที่บอกว่ามันถูกเปิดใช้งานแล้วลบมันอีกครั้งเมื่อโหลดหน้า plugins.php บางทีตัวเลือกที่เพิ่งเปิดใช้งานอาจช่วยได้บ้าง อาจทำหน้าที่ได้ดีขึ้นเป็นคำถามใหม่ @Omer
Birgire
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.