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

在WordPress区块主题中加载语言特定模板部件的方法

在WordPress区块主题中加载语言特定模板部件的方法

嘿,我来给你唠唠怎么在区块主题里实现按语言加载不同的模板部件~ 刚好你用的是404页面的场景,咱就对着这个例子说清楚。

咱先看最靠谱的方案——用WordPress的钩子来动态修改模板部件的slug,不用改太多模板文件,灵活性还高:

  • 打开你区块主题的functions.php文件,把下面这段代码加进去:
add_filter( 'block_core_template_part_render', 'load_language_specific_template_part', 10, 3 );
function load_language_specific_template_part( $content, $block, $instance ) {
    // 只针对咱们的404-message模板部件生效,别影响其他部件
    if ( $block['attrs']['slug'] !== '404-message' ) {
        return $content;
    }

    // 获取当前站点的语言标识,原生WordPress用get_locale()会返回fr_FR、en_US这种格式
    $current_locale = get_locale();
    // 如果你用的是Polylang这类多语言插件,也可以用pll_current_language('slug')直接拿到fr、en这种短代码,更方便
    // $current_lang = pll_current_language('slug');

    // 拼接出语言专属的模板部件slug
    $lang_specific_slug = '404-message-' . substr( $current_locale, 0, 2 ); // 取locale前两位,比如fr_FR就取fr

    // 先检查这个语言专属的模板部件文件是否存在
    $template_part_path = locate_template( "parts/{$lang_specific_slug}.php" );
    if ( file_exists( $template_part_path ) ) {
        // 存在的话就替换成新的slug,重新渲染模板部件
        $block['attrs']['slug'] = $lang_specific_slug;
        $content = render_block( $block );
    }

    // 要是找不到语言专属的文件,就返回原来的默认模板部件,不会出错
    return $content;
}
  • 别忘了提前创建好对应的模板部件文件哦!比如在主题的parts文件夹里,要准备404-message-fr.php、404-message-en.php,还有默认的404-message.php当回退。

如果你不想用钩子,也可以直接修改404模板文件:
把主题里的404.html改成404.php(因为要写PHP代码),然后把原来的模板部件区块替换成下面这段PHP代码:

<?php
$current_locale = get_locale();
$lang_specific_slug = '404-message-' . substr( $current_locale, 0, 2 );
// 检查语言专属模板部件是否存在
if ( locate_template( "parts/{$lang_specific_slug}.php" ) ) {
    echo '<!-- wp:template-part {"slug":"' . esc_attr( $lang_specific_slug ) . '"} /-->';
} else {
    // 不存在就用默认的
    echo '<!-- wp:template-part {"slug":"404-message"} /-->';
}
?>

这样当用户访问404页面时,WordPress会自动根据当前语言加载对应的模板部件,完美解决你的需求~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:04:37