仅在 WooCommerce 前端使用 gettext 过滤器进行字符串翻译

Using gettext filter for string translation in WooCommerce frontend only

我正在尝试使用 gettext 过滤器在没有语言文件的情况下翻译主题中的单词。但我只想在移动设备上翻译它 wp_is_mobile 并且只在前端。

使用下面的代码适用于前端,但在管理员中会破坏站点。

add_filter( 'gettext', 'translate_one_word', 999, 3 );
function translate_one_word( $translated, $text, $domain ) {

    if (is_admin()) return;

        if ( wp_is_mobile() ) {

            $translated = str_ireplace( 'Wrong', 'Right', $translated );

    return $translated;

    }
}

谁能告诉我为什么我的网站在后端部分出现问题?

您的代码在后端运行顺利,但包含 2 个错误

  1. 你其实return什么都没有

这个

if (is_admin()) return;

应该是

if (is_admin()) return $translated;

  1. 始终使用没有任何条件的return,否则不满足条件,则无法returned

这个

 if ( wp_is_mobile() ) {

    $translated = str_ireplace( 'Wrong', 'Right', $translated );

    return $translated;

}

应该是

 if ( wp_is_mobile() ) {

    $translated = str_ireplace( 'Wrong', 'Right', $translated );

}

return $translated;

因此,作为最终结果,您将得到:

function filter_gettext( $translated, $text, $domain ) {
    if ( is_admin() ) {
        return $translated;
    }

    if ( wp_is_mobile() ) {
        $translated = str_ireplace( 'Wrong', 'Right', $translated );
    }
    
    return $translated;
}
add_filter( 'gettext', 'filter_gettext', 10, 3 );