我已经开发了woocommerce产品的进口商,我需要翻译产品,当然还要翻译相关的分类法。
对于翻译,我决定使用wpml,但是很遗憾,我无法将德语分配给已翻译的分类法。
不幸的是,我什至无法在WPML支持论坛中找到解决我的问题的帮助,并且在线可用的代码对我不起作用。
global $sitepress;
$args_it = array( 'description'=> $term_name_it, 'slug' => $term_slug, 'parent' => 0 );
$args_de = array( 'description'=> $term_name_de, 'slug' => $term_slug. "-de", 'parent' => 0 );
$term_it = wp_insert_term( $term_name_it, 'product_cat', $args_it );
$term_de = wp_insert_term( $term_name_de, 'product_cat', $args_de );
// get the trid from the original
$trid = $sitepress->get_element_trid($term_it['term_id'], 'tax_product_cat');
// associate the translated term to the original
$sitepress->set_element_language_details($term_de['term_id'], 'tax_product_cat', $trid, 'de', $sitepress->get_default_language());
目前,使用此代码,我没有任何错误,但是它向我显示了所有术语,好像它们都是意大利语而不是翻译一样。
答案 0 :(得分:1)
我意识到$ trid为NULL,并且element_id中的“ wp_icl_translations”表保存了值“ term_taxonomy_id”而不是“ term_id”。
下面的代码解决了我的问题。玩得开心。
global $sitepress;
$args_it = array( 'description'=> $term_name_it, 'slug' => $term_slug, 'parent' => 0 );
$args_de = array( 'description'=> $term_name_de, 'slug' => $term_slug. "-de", 'parent' => 0 );
$term_it = wp_insert_term( $term_name_it, 'product_cat', $args_it );
$term_de = wp_insert_term( $term_name_de, 'product_cat', $args_de );
// get the trid from the original
$trid = $sitepress->get_element_trid($term_it['term_taxonomy_id'], 'tax_product_cat');
if (! empty($trid)) {
// associate the translated term to the original
$sitepress->set_element_language_details($term_de['term_taxonomy_id'], 'tax_product_cat', $trid, 'de', $sitepress->get_default_language());
$sitepress->set_element_language_details($term_it['term_taxonomy_id'], 'tax_product_cat', $trid, 'it', $sitepress->get_default_language());
} else {
// $trid is NULL
}