发布新产品

时间:2018-01-24 19:59:17

标签: php wordpress

我正在使用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',
        );
    }
}

1 个答案:

答案 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
}