一些插件和主题的正常运行依赖于会话信息。切换语言时,会话信息会丢失,访客可能无法再在购物车中看到他们的产品。WPML 提供了一种在域名和语言之间同步这些会话数据的机制。
在 WPML → 设置 → URL 和 SEO → 每种语言使用不同的域名页面,在语言 URL 格式部分下,您可以找到通过语言切换器在域名之间传递会话参数选项。它可在域名和语言之间同步这些会话数据。
为什么 WPML 需要在域名中的语言之间同步会话数据
浏览器将信息保存在所谓的 cookie 或会话中。当您访问一个应该“认识您”的网站时,该网站将显示个性化的内容。您可以在许多电子商务和会员网站上看到这一点。浏览器在其存储中保留一些关于您的信息,并将其发送到服务器。服务器使用这些信息来继续您之前的浏览会话。
浏览器必须在不同网站之间对这些会话信息保持严格隔离。存储在浏览器中的一些会话信息包括登录详细信息或付款信息。显然,您不希望您在 Amazon 上的付款详细信息被共享给非 amazon.com 的其他网站。
WPML 允许网站从不同的域名提供语言。由于浏览器不知道它实际上是同一个网站,因此浏览器通过在语言之间隔离会话信息是正确的做法。因此,WPML 包含了在语言之间传递会话信息的自身机制。请放心,此机制仅在 WPML 服务的域名之间传递会话信息。这样,您的访客就可以切换语言并享受持久的浏览器存储。
WPML 如何在不同域名中的语言之间同步会话数据
当您将 WPML 配置为在域名中使用语言时,WPML 知道它需要在语言之间同步会话信息。我们在 WPML 中创建了一个名为 wpml_cross_domain_language_data 的过滤器。此过滤器允许插件和主题在域名之间传递必要的信息。
我们的 WPML Multilingual & Multicurrency for WooCommerce 使用此过滤器来传递购物车 cookie。
因此,当您在域名中使用语言,并且在切换语言时需要同步 cookie 时,您会看到语言切换器 URL 附加了参数。
它看起来像这样:
sample.es?xdomain_data=LONG_STRING
这个“神奇”的 xdomain_data 参数包含了在切换语言后设置 cookie 的信息。
xdomain_data 参数会导致 SEO 问题吗?
完全不会。WPML 在浏览器中使用 Javascript 添加 xdomain_data 参数(还记得我们是在浏览器中对 cookie 进行编码的吗?)。
唯一能看到此参数的是拥有这些 cookie 的用户。从 WordPress 渲染的页面中无法获取该信息。它是在稍后在用户端添加的。该信息仅在切换语言时(并且确实需要该信息时)才会到达 Web 服务器。
您永远不会在您的站点地图或被索引的页面中看到带有 xdomain_data 的 URL。Google 永远不会在页面源代码中看到这些参数。您(有时)会在 Google Analytics 中看到 xdomain_data,因为这些是访客实际点击的链接。这是正常的,不会对 Google 或 SEO 产生任何负面影响。
此机制适用于我的自定义语言切换器吗?
如果您使用 WPML 的语言切换器 API 创建您的自定义语言切换器,它将起作用。由于信息是使用 JS 添加的,只要我们的 JS 识别出语言切换器 URL,它就会向它们添加必要的参数。
