WP Rest API获得翻译类别(WPML)

时间:2018-03-12 10:54:31

标签: php wordpress rest

我正在使用Wordpress和Woocommerce插件。此外,我安装了4种语言的WPML插件。另外,我正在使用Ionic 2 App,它连接到Shop with WP Rest API。我现在想在应用程序中获取翻译语言中的类别。以下是获取类别的代码。我尝试在字符串“/ wp-json / wc / v1 / products / categories”=>中添加 /?lang = it 。 “/ wp-json / wc / v1 / products / categories /?lang = it,但我每次都得到英语(原生)类别。我做的是我在https://resttesttest.com/尝试了这个,我能够提供特定的语言。

 getStoreCategories(params) {
    var service = this;
    let url = service.appConfig.Shop_URL + "/wp-json/wc/v1/products/categories";
    url = this.initUrl(url, params);
    return new Promise(function (resolve, reject) {
      service.http.get(service.initRequest(url, 'get')).catch(err => {
        reject('error');
        return Observable.throw(err);
      }).map(res => res.json()).subscribe(data => {
        if (data) {
          service.cachedData = data;
          resolve(service.cachedData);
        }
        else {
          reject();
        }
      });
    });
  }

3 个答案:

答案 0 :(得分:0)

对于使用WPML的rest API,如果您使用的是以下结构

,则您的网址会有所不同

假设样本产品网址

如果网址结构为List

那么您的API调用将是

http://yoursite.com/ar/product/product-01

如果网址结构将语言代码视为let url = service.appConfig.Shop_URL + "{lang_code}" + "/wp-json/wc/v1/products/categories"; Query string

那么您的API调用将是

http://yoursite.com/product/product-01?lang=ar

P.S我不知道反应中的语法,但我已经给了你一个想法

答案 1 :(得分:0)

我可以解决这个问题。我在请求中传递了参数lang,如下所示:

instanceof Plant

答案 2 :(得分:0)

如果您使用WPML插件的多语言。您可以通过过滤默认的类别响应来使用多语言代码。

add_filter( 'woocommerce_rest_prepare_product_cat', 'change_product_categories_response', 10, 3 );

function change_product_categories_response( $response, $item, $request ) {
global $sitepress;
$lang  = sanitize_text_field( $_REQUEST['lang'] );

$sitepress->switch_lang( $lang );

return $response;
}