WPML
الحالة
محلولة
أُبلغ عنها لـ
WPML Multilingual CMS 4.6.4
تم حلها في
WPML 4.7
الإضافة/القالب ذو الصلة
WooCommerce Memberships
وسوم الموضوع
Compatibility

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

إذا كنت تستخدم WooCommerce Membership، فستلاحظ أنه إذا تمت إضافة صفحة ضمن إعدادات تقييد المحتوى داخل خطة العضوية وحُذفت بعد ذلك، فإن WPML يطبّق التقييد بشكل غير صحيح على جميع الصفحات في جميع أنحاء الموقع، وليس فقط على تلك المحددة في خطة العضوية.

حل بديل مؤقت

يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.


  • افتح الملف …/wp-content/plugins/woocommerce-multilingual/compatibility/WcMemberships/class-wcml-wc-memberships.php.

  • ابحث عن السطر 134.

  • استبدل هذا الكود:
    public function add_translated_object_ids( $object_ids ) {
    	$result = [];
    	foreach ( $object_ids as $object_id ) {
    		$type         = apply_filters( 'wpml_element_type', get_post_type( $object_id ) );
    		$trid         = apply_filters( 'wpml_element_trid', null, $object_id, $type );
    		$translations = array_values( wp_list_pluck(
    			apply_filters( 'wpml_get_element_translations', [], $trid, $type ),
    			'element_id'
    		) );
    
    		$result = array_merge( $result, $translations );
    	}
    
    	return $result;
    }


  • بـ:
    public function add_translated_object_ids( $object_ids ) {
    	$result = [];
    	foreach ( $object_ids as $object_id ) {
    		$type         = apply_filters( 'wpml_element_type', get_post_type( $object_id ) );
    		$trid         = apply_filters( 'wpml_element_trid', null, $object_id, $type );
    		$translations = array_values( wp_list_pluck(
    			apply_filters( 'wpml_get_element_translations', [], $trid, $type ),
    			'element_id'
    		) );
    
    		$result = array_merge( $result, $translations );
    	}
    
    	// Workaround for compsupp-6900
    	if ( empty($result) ) {
    		return $object_ids;
    	}
    
    	return $result;
    }

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