如何更改WordPress默认字符串?

时间:2016-05-29 作者:Christopher

我想更改Wordpress后端的一些(20-30)默认字符串(不翻译)。

我知道有gettext过滤器,但我认为如果字符串太多,可能会导致性能问题。

我尝试的另一种方法是创建并使用admin-en\\u-US。采购订单文件。

以上哪种方法更快?有没有更好的办法?在不影响性能的情况下,您有什么建议?

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

除了kaiser的回答之外,您还可以加载定制的。使用替代原始文件的mo文件load_textdomain_mofile filter. 例如:

add_filter( \'load_textdomain_mofile\', \'cyb_filter_load_textdomain_mofile\', 10, 2 );
function cyb_filter_load_textdomain_mofile( $mofile, $domain ) {
    if ( $domain == \'some-textdomain-to-override\' ) {
        $mofile = WP_LANG_DIR . \'/overrides/\' . basename( $mofile );
    }
    return $mofile;
}
这可能会更快,但你需要在每次更新时检查更改,以保持你的状态。mo文件与原始文件同步。

SO网友:kaiser

是的,你可以use the gettext filter. 不,它不是最快的过滤器,但只有在野外向该过滤器添加回调时才是这样:

坏例子是bad 因为它会对当前请求中的数百个可翻译请求中的每一个进行字符串比较:

add_filter( \'gettext\', function( $translated, $original, $domain ) {
    return \'foo\' === $original ? \'bar\' : $translated;
}, 10, 3 );
很好的例子,您可以在需要过滤器之前添加过滤器,然后将其移除,从而加快速度:

想象一下以下核心代码、插件代码或主题代码(示例):

do_action( \'before\' );
_e( \'foo\', \'textdomain\' );
现在,让我们为gettext 过滤器:

add_action( \'before\', \'wpse228163GettextReplacement\', 10, 3 );

function wpse228163GettextReplacement( $translated, $original, $domain ) 
{
    // Instantly remove the filter so it only runs once
    remove_filter( current_filter(), __FUNCTION__ );

    return \'foo\' === $original 
        ? \'bar\' 
        : $translated;
}
ProTip: 如果要替换多个字符串,可以在第一个字符串之前钩住最新的操作或筛选,然后在下一个操作中删除回调,或在最后一个字符串之后筛选。

do_action( \'before\' );
_e( \'foo\', \'textdomain\' );
do_action( \'after\' );
添加&;删除它:

add_action( \'before\', function() {
    // Add filter
    add_filter( \'gettext\', \'wpse228163GettextReplacement\', 10, 3 );

    // Remove filter when we are done
    add_action( \'after\', function() {
        remove_filter( \'gettext\', \'wpse228163GettextReplacement\' );
    } );
} );

SO网友:Mark Kaplun

在对kaiser的答案投了赞成票之后,我仍然迫切地想指出,如果没有DB访问权限,您不太可能编写php代码,这将以一种可测量的方式影响性能(除非您完全搞砸了)。

从理论上讲,过滤器选项的性能应该更高,尤其是在内存消耗方面(这是因为内核以非优化的方式处理转换),但有一点需要说明,那就是如何将不属于代码的内容保留在代码之外。

相关推荐

WP-ADMIN:“对不起,您不能访问此页面。”

两周后不使用我们的WP站点,登录/wp-admin/ 出现白屏错误:抱歉,不允许您访问此页面。我有:重命名plugins 到plugins.temp.通过phpMyAdmin创建了一个新的管理员用户。新用户已user_meta 的作用a:1:{s:13:"administrator";s:1:"1";}.</已重命名themes 到themes.temp.</删除核心WordPress文件,并替换为新上载的文件</已替换.htaccess 使用默认