如何使用Multi-site Language Switcher插件获取WordPress多站点对应语言文章的URL以实现跨语言跳转按钮功能
嘿,我刚好对Multi-site Language Switcher(简称MLS)的用法比较熟悉,给你几个实用的方案来实现这个语言切换按钮,轻松让用户跳转到对应语言的同一篇文章:
方法1:用MLS内置函数手动获取对应语言URL
MLS自带了专门的函数mls_get_permalink(),可以直接获取当前文章在指定语言站点的对应链接。你可以把这段代码加到主题的模板文件里(比如single.php或者自定义模板的合适位置):
<?php // 先检查MLS插件是否激活,避免报错 if (function_exists('mls_get_permalink')) { // 替换成你的威尔士语站点ID(怎么找ID看下面说明) $welsh_site_id = 2; // 获取当前文章对应的威尔士语版本URL $welsh_permalink = mls_get_permalink(get_the_ID(), $welsh_site_id); // 如果找到对应链接,就输出切换按钮 if ($welsh_permalink) { echo '<a href="' . esc_url($welsh_permalink) . '" class="language-switch-btn">切换到威尔士语</a>'; } } ?>
怎么找站点ID?
登录WordPress网络后台,进入「我的站点」→「网络管理」→「站点」,鼠标悬停在威尔士语站点的名称上,浏览器地址栏里的id=后面的数字就是站点ID。
方法2:用MLS短代码快速添加切换按钮
如果你不想修改主题模板,也可以直接在文章编辑器里用MLS提供的短代码:
[mls_link site_id="2" text="Switch to Welsh"]
同样需要把site_id换成你的威尔士语站点ID,text是按钮显示的文字,保存后就能在文章里看到切换按钮了。
方法3:自定义多语言切换菜单(自动适配所有关联语言)
如果你的站点有不止两种语言,这个方案更省心——它会自动遍历所有关联的语言站点,排除当前站点后显示所有可用的切换选项:
<?php if (function_exists('mls_get_sites')) { // 获取所有MLS关联的多语言站点 $mls_sites = mls_get_sites(); $current_site_id = get_current_blog_id(); echo '<div class="language-switcher">'; foreach ($mls_sites as $site) { // 跳过当前站点 if ($site->blog_id != $current_site_id) { $target_permalink = mls_get_permalink(get_the_ID(), $site->blog_id); if ($target_permalink) { // 获取目标站点的语言名称(比如站点设置里的博客名称) $language_name = get_blog_option($site->blog_id, 'blogname'); echo '<a href="' . esc_url($target_permalink) . '" class="lang-btn">' . esc_html($language_name) . '</a>'; } } } echo '</div>'; } ?>
几个重要的注意事项
- 确保你已经在MLS插件里正确关联了不同语言的文章:编辑文章时,右侧的MLS metabox里要选择对应语言的匹配文章,不然插件找不到跳转链接。
- 如果用自定义主题,修改模板文件前最好先创建子主题,避免主题更新时丢失你的修改。
- 可以给按钮加一点CSS样式让它更美观,比如:
.language-switch-btn { padding: 8px 16px; background: #0073aa; color: #fff; border-radius: 4px; text-decoration: none; } .language-switch-btn:hover { background: #006799; }
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

