Polylang无文章翻译时跳转首页:能否取消跳转或显示原文章?
解决Polylang翻译版本不存在时的重定向问题
方案1:完全禁止自动重定向
如果不想让Polylang在翻译不存在时跳转到首页,只需在主题的functions.php文件或者自定义功能插件中添加以下代码:
add_filter('pll_redirect_on_no_translation', '__return_false');
添加后,当访问不存在的翻译版本链接时,会直接返回404页面,而非跳转到首页。
方案2:跳转到原语言版本的文章
如果希望用户访问不存在的翻译链接时,自动跳转到原语言的文章(而非首页),可以用以下代码替换上面的片段:
add_filter('pll_redirect_on_no_translation', function($redirect, $lang) { global $post; // 仅针对文章/页面类型生效 if (is_singular() && $post) { // 获取原文章的语言版本 $original_post = pll_get_post($post->ID, pll_get_post_language($post->ID)); if ($original_post) { wp_redirect(get_permalink($original_post)); exit; } } // 其他情况保持默认逻辑 return $redirect; }, 10, 2);
这段代码会检测当前访问的内容是否有原语言版本,若存在则跳转过去,否则按原逻辑处理。
注意事项
- 修改主题文件前记得备份,避免出错导致网站故障。
- 如果使用子主题,建议将代码添加到子主题的
functions.php中,避免主题更新时代码被覆盖。
内容的提问来源于stack exchange,提问作者Adrián Díaz Martín
相关产品推荐
相关产品推荐

