更改“插件已激活”消息的默认设置

时间:2014-03-29 作者:gate_engineer

每当WordPress中的管理员激活插件时,在重新加载插件页面时,成功激活后会显示一条通知“插件已激活”。

Screenshot of Plugin Activated message

有没有办法更改管理通知中显示的文本,或者我必须使用自己的自定义消息?此外,如果我必须使用自定义消息,这会抑制默认的“插件激活”消息吗?

Related Questions:

Duplicate:

感谢Pieter的发现:

Additional Resources:

Note

请记住,尽管“gettext”过滤器仅在调用translate() 作用translate() 几乎被i18n.php。这些包括本帖中列出的所有功能“Gettext Syntax“。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

您可以尝试以下操作:

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

We can refine it further:

如果您只想激活/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 吊钩,在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 );
在前面的代码示例中。

结束

相关推荐

重写admin-ajax.php的规则

我浏览了很多帖子,在google上搜索了很多,但还是没能实现。我正在尝试为管理ajax创建一个重写规则。php,以实现此处所示的相同结果:Adding admin-ajax.php to the frontend. Good or bad idea?但是,我不想使用htaccess文件。相反,我需要通过动态添加规则(比如使用add\\u rewrite\\u rule)来实现这一点,例如,因为要调用的ajax函数位于我正在编写的插件中,我希望提供一个友好的URL来调用。我似乎遵循了有关该方法的所有最佳做法