WPML
الحالة
محلولة
تم حلها في
4.12.0

نظرة عامة على المشكلة

بعد ترجمة أحد المنتجات، أحياناً لا تعود متغيرات المنتج باللغة الافتراضية ظاهرة في الواجهة الأمامية.

السبب في ذلك هو أن transient الخاص بالمتغير يتم تخزينه برمز اللغة المترجمة بدلاً من رمز اللغة الافتراضية. قد تتم تعبئة transient الخاص بأبناء منتج WooCommerce المتغير أحياناً بقيم خاطئة إذا تم حسابه في الصفحة بلغة مختلفة.

للأسف، لم نتمكن من تحديد السياق الذي يحدث فيه هذا.

حل بديل مؤقت

إلى أن نحصل على معلومات أفضل عن السياق، نقترح إضافة المقتطف التالي إلى ملف functions.php في قالبك:

/**
 * Prevent issues with product variations transient when it's
 * computed in a secondary language page for a product in
 * the default language.
 */
add_filter( 'woocommerce_variable_children_args', function( $args ) {
	global $sitepress;
	$parseQueryAction = [ $sitepress, 'parse_query' ];
	if ( remove_action( 'parse_query',  $parseQueryAction ) ) {
		add_action( 'setted_transient', function() use ( $parseQueryAction ) {
			add_action( 'parse_query',  $parseQueryAction );
		} );
	}
	return $args;
} );

جميع المشاكل المعروفة →