我正在使用Woocommerce和WPML翻译插件。我正在使用4种语言。默认语言为英语。我使用表单在前端发布新产品。例如,当我使用意大利语发布新产品时,此产品的语言代码为意大利语。但是,我试图实现,所有发布的产品都有英语作为默认语言。所以我尝试使用我的钩子,我也将每个发布产品的数量设置为1.不幸的是我无法用钩子更新语言代码。我做错了什么?
add_action('save_post', 'myWoo_savePost', 10, 2);
function myWoo_savePost($postID, $post) {
if (isset($post->post_type) && $post->post_type == 'product') {
update_post_meta($post->ID, '_manage_stock', 'yes');
update_post_meta($post->ID, '_stock', '1');
//set language code to en
$set_language_args = array(
'language_code' => 'en',
);
}
}
答案 0 :(得分:0)
我可以修复此错误,这是我的代码
add_action('save_post','myWoo_savePost',10,2);
function myWoo_savePost($postID, $post) {
if (isset($post->post_type) && $post->post_type == 'product') {
update_post_meta($post->ID, '_manage_stock', 'yes');
update_post_meta($post->ID, '_stock', '1');
}
//start translation
$inserted_post_ids = $post->ID;
if ( $inserted_post_ids) {
// https://wpml.org/wpml-hook/wpml_element_type/
$wpml_element_type = apply_filters( 'wpml_element_type', 'post_product' );
// get the language info of the original post
// https://wpml.org/wpml-hook/wpml_element_language_details/
$get_language_args = array('element_id' => $inserted_post_ids, 'element_type' => 'post_product' );
$original_post_language_info = apply_filters( 'wpml_element_language_details', null, $get_language_args );
$set_language_args = array(
'element_id' => $inserted_post_ids,
'element_type' => $wpml_element_type,
'trid' => $original_post_language_info->trid,
'language_code' => 'en',
'source_language_code' => $original_post_language_info->language_code
);
do_action( 'wpml_set_element_language_details', $set_language_args );
}
//end translation
}