[英]WooCommerce, Code snippet and WPML: Allow translation from new country
[英]Programmatically translation of the terms of woocommerce with wpml
我已经开发了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());
目前,使用此代码,我没有任何错误,但是它向我显示了所有术语,就好像它们都是意大利语而不是翻译一样。
我意识到$ 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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.