You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决WooCommerce产品排序‘Sort by’及分页文本无法翻译的问题?

解决WooCommerce + Avada主题中“Sort by”及分页文本无法翻译的问题

问题原因

你之前的方法失效,核心原因是:

  • “Sort by”文本大概率是Avada主题自身输出的,而非WooCommerce核心内容,所以需要针对Avada的文本域(avada)处理,而非默认的WooCommerce域。
  • 分页的产品数量文本同理,可能由Avada或WooCommerce输出,但需要匹配准确的原始文本格式(比如带占位符的复数文本)。

解决方案

方案1:通过文本过滤器精准替换(推荐)

将以下代码添加到Avada子主题的functions.php中(不要直接修改父主题,避免主题更新丢失):

// 翻译单文本(如Sort by)
function custom_avada_woocommerce_translations( $translated_text, $text, $domain ) {
    // 处理Avada主题的文本
    if ( 'avada' === $domain ) {
        switch( $text ) {
            case 'Sort by':
                $translated_text = 'Řadit dle';
                break;
            case 'Sort by:': // 部分主题版本可能带冒号,按需启用
                $translated_text = 'Řadit dle:';
                break;
        }
    }

    // 处理WooCommerce的分页结果文本
    if ( 'woocommerce' === $domain ) {
        // 匹配"Showing %1$s–%2$s of %3$s results"格式
        if ( $text === 'Showing %1$s–%2$s of %3$s results' ) {
            $translated_text = sprintf( 'Zobrazuji %1$s–%2$s z %3$s výsledků', '%1$s', '%2$s', '%3$s' );
        }
        // 匹配单结果文本"Showing 1 result"
        if ( $text === 'Showing 1 result' ) {
            $translated_text = 'Zobrazuji 1 výsledek';
        }
    }

    return $translated_text;
}
add_filter( 'gettext', 'custom_avada_woocommerce_translations', 20, 3 );

// 翻译复数文本(如分页的多结果)
function custom_avada_woocommerce_plural_translations( $translated_text, $single, $plural, $count, $domain ) {
    if ( 'woocommerce' === $domain ) {
        if ( $single === 'Showing 1 result' && $plural === 'Showing %d results' ) {
            $translated_text = $count === 1 ? 'Zobrazuji 1 výsledek' : sprintf( 'Zobrazuji %d výsledků', $count );
        }
    }
    return $translated_text;
}
add_filter( 'ngettext', 'custom_avada_woocommerce_plural_translations', 20, 5 );

方案2:直接修改模板文件(更直观)

Avada主题允许通过子主题覆盖WooCommerce模板:

  1. 在Avada子主题中创建目录woocommerce/loop/
  2. 复制父主题wp-content/themes/Avada/woocommerce/loop/orderby.php到子主题对应目录
  3. 打开子主题的orderby.php,找到包含“Sort by”的代码行,替换为你的本地语言(比如<span class="fusion-sort-by-label"><?php esc_html_e( 'Řadit dle', 'avada' ); ?></span>)
  4. 同理,复制wp-content/themes/Avada/woocommerce/loop/result-count.php到子主题,修改分页结果文本。

为什么之前的方法无效?

  • 方法1的gettext过滤器未指定Avada的文本域(avada),且匹配的“Sort by ”带空格可能与主题实际输出的文本不符。
  • 方法2的woocommerce_catalog_orderby仅修改排序下拉选项的文本,不影响前面的“Sort by”标签。

内容的提问来源于stack exchange,提问作者pechyno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:15:55