Created
December 28, 2016 00:11
-
-
Save ialhashim/733ace0088a1b1e6d7d253341e9acbd1 to your computer and use it in GitHub Desktop.
WooCommerce Multilingual Create Products
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Product in default language | |
{ | |
global $sitepress; | |
$sitepress->switch_lang('en'); | |
// Add the product (a post of type 'product') | |
$post_id = wp_insert_post($post_data); | |
// Attach media to it | |
set_post_thumbnail( $post_id, get_post_id_by_title( $code, 'attachment' ) ); | |
// Update product fields | |
foreach ($meta_fields as $wc_key => $my_key) { | |
update_post_meta($post_id, $wc_key, $data[ $my_key ]); | |
} | |
// BUG: https://wordpress.org/support/topic/products-are-not-showing-on-product-category-page/#post-6996204 | |
update_post_meta( $post_id, '_visibility', 'visible' ); | |
update_post_meta( $post_id, '_stock_status', 'instock'); | |
update_post_meta( $post_id, 'total_sales', '0' ); | |
// Set category | |
$term = get_term_by( 'slug', $data['category'], 'product_cat' ); | |
wp_set_object_terms( $post_id, $term->term_id, 'product_cat' ); | |
} | |
// Product in other langauge: | |
{ | |
// Get WPML & WooCommerce WPML | |
global $woocommerce_wpml, $iclTranslationManagement, $woocommerce_wpml, $sitepress, $wpdb; | |
$woocommerce_wpml->sync_variations_data = new WCML_Synchronize_Variations_Data($woocommerce_wpml, $sitepress, $wpdb); | |
$language_code = 'ar'; | |
$sitepress->switch_lang($language_code); | |
// Duplicate post | |
$t_post_id = $iclTranslationManagement->make_duplicate($post_id, $language_code); | |
$tn = get_post( $t_post_id ); | |
// Create job | |
$translation_editor = new WCML_Translation_Editor($woocommerce_wpml, $sitepress, $wpdb); | |
$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 ); | |
$trid = $original_post_language_info->trid; | |
$translation_editor->create_product_translation_package( $post_id, $trid, $language_code, ICL_TM_COMPLETE ); | |
$j = $translation_editor->create_product_translation_package( $post_id, $trid, $language_code, ICL_TM_COMPLETE ); | |
$trans_job_id = $iclTranslationManagement->add_translation_job( $j['rid'], $j['user_id'], $j['translation_package'] ); | |
$job_details = array('job_type' => 'wc_product', | |
'job_id' => $post_id, | |
'target' => $language_code, | |
'translation_complete' => ICL_TM_COMPLETE); | |
// Create editor | |
$editor = new WCML_Editor_UI_Product_Job( $job_details, $woocommerce_wpml, $sitepress, $wpdb ); | |
// Fill up translation | |
$t[ md5( 'title' ) ] = $tn->post_title; | |
$t[ md5( 'product_content' ) ] = $tn->post_name; | |
$t[ md5( 'product_content' ) ] = $tn->post_excerpt; | |
$t[ md5( '_purchase_note' ) ] = get_post_meta( $tn->ID, '_purchase_note', true ); | |
// Save as complete | |
$editor->save_translations( $t ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment