WPML以编程方式转换术语/分类

时间:2018-07-19 作者:Agon Xheladini

我所有的术语都是英语的,我正在使用foreach对英语术语创建/复制相同的德语术语,这样我就为德语创建了所有术语。

问题是什么时候我需要给英语版本指定一个德语术语。

我用TRID试过这样的技巧:

$trid = $sitepress->get_element_trid($englist_term_id, "taxonomy_name");

$sitepress->set_element_language_details($new_term_id, "taxonomy_name", $trid, $lang_code, $sitepress->get_default_language());
问题是$trid不接受任何值(上面代码的第一行)

也许还有其他方法可以做到这一点!

2 个回复
SO网友:Agon Xheladini

好的,我找到了解决方案。

实际上,icl\\U翻译表上的分类名称是以前缀“tax\\u0”存储的,前缀是“tax\\u0”,意思是分类法。上述代码的工作方式如下:

$trid = $sitepress->get_element_trid($englist_term_id, "tax_taxonomy_name");

$sitepress->set_element_language_details($new_term_id, "tax_taxonomy_name", $trid, $lang_code, $sitepress->get_default_language());
差异是tax\\uuprefix。

干杯

SO网友:Matthias Günter

@agon-xheladini 他的回答完全正确。

但这对我来说并不管用WPML API 想拥有term_taxonomy_id 而是:

element\\u id(bool)使用term_taxonomy_id for taxonomies, post\\u post id

因此,您应该始终确保不使用term_id:

$originalElementId = get_term($original_term_id)->term_taxonomy_id;

$trid = $sitepress->get_element_trid($originalElementId, "tax_" . $taxonomy);
$sitepress->set_element_language_details(
    get_term($new_term_id)->term_taxonomy_id,
    "tax_" . $taxonomy,
    $trid,
    $lang_code,
    $sitepress->get_default_language()
);
Why? term_taxonomy_idterm_id 存储在不同的WordPress数据库表中。对于通常的安装,它们在相同的期限内具有相同的ID(自动递增)。但我有一些自动增量不同的安装(可能是工具“清除”条目?)。

结束

相关推荐

WP_SET_OBJECT_TERMS()不向自定义帖子和自定义分类添加新术语

我正在使用自定义分类法创建自定义帖子类型,同时为自定义帖子提交前端表单。它正在创建帖子,但并没有创建我已经设置的新分类法,只需要添加自定义分类法<form action=\'\' method=\"post\" id=\"drop_message\"> <div class=\"input-group\"> <div class=\"first\"> <label for=\"first-name-opt\"&g