我正在以编程方式创建多个woocommerce产品。为了创建翻译的产品,根据WPML文档,我应该用途:
$my_translated_post = array(
'post_title' => $this->title_en,
'post_content' => $this->description_en,
'post_status' => $this->status,
'post_type' => 'product',
'post_author' => 1,
);
$translated_post_id = wp_insert_post( $my_translated_post );
$wpml_element_type = apply_filters( 'wpml_element_type', 'product' );
$get_language_args = array('element_id' => $post_id, 'element_type' => 'product' );
$original_post_language_info = apply_filters( 'wpml_element_language_details', null, $get_language_args );
$product = wc_get_product( $translated_post_id );
$set_language_args = array(
'element_id' => $translated_post_id,
'element_type' => $wpml_element_type,
'trid' => $original_post_language_info->trid,
'language_code' => 'en', //language code of secondary language
'source_language_code' => $original_post_language_info->language_code
);
do_action( 'wpml_set_element_language_details', $set_language_args );
$product->save();
这将创建带有标题和描述的产品。然而,为了“同步”价格、股票、图片、类别和其他元数据,我必须在 Jmeter 板中单击“产品”,单击快速编辑,然后单击更新,而不更改任何内容。据我所知,在该过程中的某个地方有一个“触发器”,它将翻译后的产品与其父产品“同步”。关于如何通过编程触发此操作,有什么线索吗?
1条答案
按热度按时间tjjdgumg1#
我发现了一个使用woocommerce API的解决方案。我们可以使用API的"批处理"方法来批量更新产品。您需要从以下位置下载API:https://github.com/woocommerce/wc-api-php启动API连接:
将产品ID保存到如下数组中:
修复数组并将其推送到api:
重要提示:开箱即用的API限制每个API调用100个产品。然而,这可以很容易地用钩子改变。