【问题标题】:Wordpress admin-ajax and user profile localizationWordpress admin-ajax 和用户配置文件本地化
【发布时间】:2017-07-25 23:28:43
【问题描述】:

所以我有一个本地化为西班牙语的英语主题。它在西班牙语中非常好用。

但是,如果我将我的用户配置文件语言更改为英语 - 这样我就可以在仪表板上看到英语 - 网站上 AJAX 生成的内容会变成未翻译的英语。

如果我退出,AJAX 生成的内容会再次变为西班牙语。

如果设置了用户配置文件语言,我的猜测是 admin-ajax 正在加载用户配置文件语言而不是主题语言。

所以我的问题是:我该如何纠正这个问题,让 admin-ajax 始终使用主题语言?


编辑:这里是 AJAX 调用。我没有发送任何需要翻译的文本。

$('#load_more').on('click', function() {
    var offset = $('#main-ajax-container').data('offset');
    var prefix = $('#main-ajax-container').data('prefix');
    var blogid = $('#main-ajax-container').data('blogid');
    var fid = $('#main-ajax-container').data('fid');

$.ajax({
  type: "get",
  url: "wp-admin/admin-ajax.php",
  data: {
    action: "home_load_more",
    siteUrl: "<?php echo get_site_url();?>",
    offset: offset,
    prefix: prefix,
    blogid: blogid,
    fid: fid
  },
  success: function(resp) {
      $('#main-ajax-container').append(resp);
      offset = parseInt(offset) + 3;
      $('#main-ajax-container').data('offset', offset);
      var max = $('#main-ajax-container').data('max');
      if (offset >= parseInt(max)) { 
        $('#load_more').addClass('done');
      }
    } 
  });
});

【问题讨论】:

  • 您如何处理两种不同语言的内容?向我们展示您的 WP AJAX 功能代码
  • @Junaid 添加了通话。

标签: ajax wordpress localization internationalization admin-ajax


【解决方案1】:

你说得对。如其名称所示,“admin-ajax”端点是管理区域的一部分,因此将使用“仪表板”语言。

我假设您将 Ajax 端点用于非管理目的,但问题是您通过 Ajax 加载什么内容?

最简单的情况是您只加载主题翻译。如您所说,这种情况很容易覆盖“主题语言”。

尝试将其添加到主题的 functions.php 文件中:

if( defined('DOING_AJAX') && DOING_AJAX && is_user_logged_in() ){
  add_filter('theme_locale', function(){
    return get_locale();
  } );
}

但是,您问如何让 admin-ajax 始终 使用网站语言。 这真的是你想要的吗?这意味着仪表板中任何地方使用的任何 ajax 函数都不会与它们运行的​​页面使用相同的语言。

有很多方法可以做到这一点,但它变得更加复杂。如果您在这方面更新您的问题,我会更新我的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多