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

为WPML登录用户启用“language filtering for ajax operations”功能

解决WPML AJAX语言过滤对登录用户生效的问题

WPML默认仅对未登录用户启用AJAX语言过滤的Cookie机制,登录用户的语言偏好会存储在用户元数据中,导致AJAX请求无法自动适配其语言设置。要让该功能对登录用户生效,可通过添加自定义代码实现:

  • 添加以下代码到主题的functions.php文件,或使用自定义代码插件(如Code Snippets):
// 为登录用户设置WPML语言Cookie
add_action('init', 'wpml_set_language_cookie_for_logged_in_users');
function wpml_set_language_cookie_for_logged_in_users() {
    if (is_user_logged_in() && function_exists('wpml_get_current_language')) {
        $current_lang = wpml_get_current_language();
        $cookie_name = 'wpml_language';
        if (!isset($_COOKIE[$cookie_name]) || $_COOKIE[$cookie_name] !== $current_lang) {
            setcookie($cookie_name, $current_lang, time() + 30 * 24 * 60 * 60, COOKIEPATH, COOKIE_DOMAIN);
        }
    }
}

// 强制AJAX请求使用登录用户的WPML语言设置
add_filter('wpml_preferred_language', 'wpml_force_logged_in_user_language_for_ajax', 10, 2);
function wpml_force_logged_in_user_language_for_ajax($preferred_lang, $default_lang) {
    if (is_user_logged_in() && wp_doing_ajax() && function_exists('wpml_get_current_language')) {
        return wpml_get_current_language();
    }
    return $preferred_lang;
}
  • 代码说明:

    • 第一部分会在用户登录时自动设置WPML语言Cookie,确保AJAX请求能获取到正确的语言标识
    • 第二部分会在处理AJAX请求时,强制读取当前登录用户的WPML语言设置,替代默认的检测逻辑
  • 注意事项:

    • 修改主题文件前请做好备份,避免出现站点故障
    • 完成设置后请清除浏览器缓存,确保Cookie正常生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:50:40