Background of the issue:
I am trying to manage stock on my website using WPML. I expected to see the same stock levels for the same products in all languages. The issue can be seen on this page: hidden link.
Symptoms:
The stock levels are not synced between languages. Specifically, Stock EN is 16, while Stock NL is 0.
Questions:
Why is the product stock not syncing between languages?
How can I ensure that stock levels are the same for all languages?
I forced the stock on the NL product using this snippet:
/*
* Force stock
*/
function force_stock_for_translated_product( $translated_id, $new_stock ) {
// Get the default language (usually 'en' or 'nl')
$default_lang = apply_filters( 'wpml_default_language', null );
// Get the original product ID in default language
$original_id = apply_filters( 'wpml_object_id', $translated_id, 'product', false, $default_lang );
// If original exists, update its stock
if ( $original_id ) {
update_post_meta( $original_id, '_stock', $new_stock );
wc_delete_product_transients( $original_id );
wc_delete_product_transients( $translated_id ); // Just to be sure
} else {
// If no link found, force update on translated product directly
update_post_meta( $translated_id, '_stock', $new_stock );
wc_delete_product_transients( $translated_id );
}
}
force_stock_for_translated_product(38060, 16);
This works; so why is WPML not syncing the stock level?
I changed the setting _stock from `don't translate` to `copy` and now the stock synces between languages when I save the product. What is the correct setting?
Languages: English (English )Spanish (Español )German (Deutsch )
Timezone: America/Lima (GMT-05:00)
I can only suggest using the recommended settings from my last comment. Any different setting could cause unexpected issues between WooCommerce and WPML.
Languages: English (English )Spanish (Español )German (Deutsch )
Timezone: America/Lima (GMT-05:00)
After adjusting the settings, you might need to update the translations of the products to sync the fields.
If this doesn't resolve the issue, I'd be happy to offer to take a closer look.
I would like to request temporary access (wp-admin and FTP) to the website to investigate the issue further.
The required fields are located below the comments section when you log in to leave the next reply. The information you provide is private, meaning only you and I can see and access it.
IMPORTANT
Please be sure to back up your website and database before granting us access.
If you can't see the "wp-admin / FTP" fields, your post and website credentials will be set to "PUBLIC." DO NOT publish the data unless you see the required wp-admin / FTP fields.
I may need to install a plugin called "All In One WP Migration" to create a copy of the website so I can investigate the issue further.
However, I would also be very grateful if you could provide a staging site or a copy of the website from your server for this purpose.
If you have any questions about creating such a staging site, you can consult your hosting provider. Please note that WPML must also be registered on this staging site at https://wpml.org/account/websites/.
If you are unable to provide such a copy of the website for testing, please let me know on this ticket.
The private reply form looks like this: hidden link
Click "I still need assistance" the next time you reply.
Video: hidden link
Please note that we are required to request this information individually on each ticket. We are not permitted to access any credentials that were not specifically submitted on this ticket using the private response form.